`
wang_zhi_peng2007
  • 浏览: 249128 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

【Hibernate总结系列】常见异常总结

 
阅读更多

【Hibernate总结系列】常见异常总结

1. org/hibernate/criterion/Criterion

工程布署的时候没有加入hibernate3的jar包,这个jar不是默认加入的,要在myeclipse -> add hibernate capabilities... ->选择copy checked libraries to project folder and add to build-path否则工程布署的时候无论如何是不会有hibernate的包的。

2. org.hibernate.id.IdentifierGenerationException

当出现org.hibernate.id.IdentifierGenerationException: ids for this class must be manually assigned before calling save():异常时,一般是因为<id>元素配置不正确,<id>元素缺少其子元素<generator></generator>的配置引起。

解决方案:<id>元素映射了相应数据库表的主键字段,对其子元素<generator class="">,其中class的取值可以为increment、identity、sequence、hilo、native……等,更多的可参考hibernate参考文档,一般取其值为native 。

generator class="assigned“而类型type="java.lang.Integer”如果主键时自动增长的Int型,把assigned改成自动增长的Identity,assigned是自动增长的varchar型的。

3. org.hibernate.PropertyValueException

数据库的表里字段设有not null,执行dao.delete(op); 时出现异常:

org.hibernate.PropertyValueException: not-null property references a null or transient value: com.easyfile.util. Operators. operatorid

在OperatorsDAO.java中private static Logger logger = Logger.getLogger(AdminAction.class);这句并没有显式地自动加载Id过来,还是需要dao.getSession().load(op,op.getOperatorid());来加载id。完整的代码如下:

String operatorid = request.getParameter("delOperatorid");

OperatorsDAO dao=new OperatorsDAO();

Transaction tran=dao.getSession().beginTransaction();

Operators op = new Operators();

op.setOperatorid(Integer.parseInt(operatorid));

dao.getSession().load(op,op.getOperatorid());

dao.delete(op);

tran.commit();

dao.getSession().close();

4.  null id in entry (don't flush the Session after an exception occurs)

产生该异常信息有2种可能:

Ø         我们没有为数据中的非空字段设置值。如果我们在通过Hibernate增加一条记录的时候我们必须显式的通过setXxx方法为该属性赋值(/默认值)。因为在保存之前Hibernate会检查该非空字段对应的实体属性是否为空。如果不想显式赋值的话,我们可以通过xxx.hbm.xml配置文件来实现,也就是在配置文件中给出该字段的默认值。或者在你的类中设置默认值就行了。注意的是rename数据库保留字段。

Ø         在hibernate的配置文件中,有的元素有unique属性的配置,它在数据添加时并不起任何作用,只在从hbm文件生成ddl语句时才有作用,并不会在运行时校验数据。防止数据重复添加,要么在数据库上建立唯一索引(数据库保证),要么在插入时提前校验(人为保证)。当然,多数情况下是两者结合。

5.      org.hibernate.hql.ast.QuerySyntaxException

Ø         持久类写错了,要不就是写成了数据库表名

Ø         hibernate3.0不支持select中嵌套查询,据说from中也不行,只支持where中嵌套查询,好像3.1支持了select中嵌套

Ø         sql语句中字段是用了保留关键字

 

 

分享到:
评论

相关推荐

    详解Hibernate事务处理机制

    若出现异常情况,则调用`transaction.rollback()`。 ```java try { // 执行业务逻辑 session.save(entity); session.flush(); transaction.commit(); } catch (Exception e) { if (transaction != null) { ...

    Hibernate视频教程免费下载

    ### Hibernate视频教程知识点详解 #### 一、Hibernate简介与安装配置 - **Hibernate定义**:Hibernate是一种开源的对象关系映射(Object Relational ...希望本篇总结能够为学习Hibernate的朋友提供有价值的参考。

    hibernate的flush机制

    当开发人员调用Session的`save()`, `update()`, `delete()`等方法时,Hibernate并不会立即执行SQL语句,而是将这些操作记录在其内部的一系列映射和集合中,如`entityEntries`, `insertions`, `deletions`, `updates`...

    Hibernate3.2官方中文参考手册

    - **异常处理**:了解常见的Hibernate异常类型及其原因,采取相应的处理措施。 #### 八、总结 通过深入学习Hibernate 3.2版本的官方中文参考手册,开发者不仅可以掌握基本的数据库操作技能,还能了解到更多的高级...

    Java通用管理系统(easyui,hibernate,spring mvc,spring,maven,mysql)

    Java通用管理系统是一个基于一系列成熟技术构建的企业级应用框架,它整合了EasyUI、Hibernate、Spring MVC、Spring、Maven和MySQL等技术,旨在提供高效、稳定且可扩展的管理平台。下面将详细介绍这些关键技术及其在...

    struts+hibernate的通用分页程序

    3. **异常处理:** 在实际应用中,我们还需要考虑到各种异常情况,例如用户输入非法的页码值、数据库连接失败等,这些都需要通过适当的异常处理机制来解决。 #### 五、总结 通过上述分析,我们可以看出,Struts + ...

    Hibernate泛型DAO及使用方法借鉴.pdf

    总结,泛型Hibernate DAO是企业级应用中常见的设计模式,它封装了数据库操作,使得业务逻辑层与数据访问层分离,提高了代码的可复用性和可测试性。在实际开发中,可以根据项目的具体需求,对这个基础实现进行扩展和...

    jsp源码博客系统(struts+hibernate+spring)130225

    - **异常处理**:建立健全的异常处理机制,为用户提供友好的错误提示信息;在生产环境中开启详细错误日志,便于快速定位问题原因。 ### 六、总结 综上所述,“jsp源码博客系统(struts+hibernate+spring)130225”...

    J2EE课程总结

    ### J2EE课程总结 #### 数据库:Oracle **1. Oracle SQL基础知识** - **选择行**:通过`SELECT`语句结合`WHERE`子句来实现特定条件下的数据筛选。 - **限制选择行**:利用`LIMIT`或`ROWNUM`来限制返回结果的数量...

    传智播客 Spring 完全文档 笔记总结

    - **使用容器提供的众多服务**:Spring 提供了一系列的服务,如事务管理、消息服务等,这些服务可以帮助开发者更加专注于业务逻辑的实现,而无需关心底层细节。 - **单例模式支持**:Spring 容器默认将 Bean 作为...

    java高级工程师面试总结

    ### Java高级工程师面试总结 #### Java基础 - **Hashtable和HashMap的区别**: - `Hashtable`是线程安全的,而`HashMap`不是。这意味着在多线程环境中使用`Hashtable`时无需额外的同步措施,但这也使得其性能较低...

    SSH整合开发中 404错误解决总结

    本文将针对SSH(Struts + Spring + Hibernate)框架整合开发过程中常见的404错误进行深入分析,并提供一系列解决方案,帮助初学者更好地理解和解决问题。 #### 一、Spring applicationContext.xml配置问题 1. **...

    java面试资料总结

    - **框架与库**:Spring、MyBatis、Hibernate等常见Java框架的了解和使用经验。 - **项目经验分享**:如何有效地展示个人项目,体现实际问题解决能力。 - **软技能**:沟通能力、团队合作、问题解决和学习能力的...

    JavaWeb学习总结共9页.pdf.zip

    JavaWeb是Java技术在Web开发领域的一个重要应用,它涵盖了从服务器端编程、数据库交互到网页动态内容生成等一系列技术。这份"JavaWeb学习总结共9页.pdf.zip"压缩包文件显然是一个关于JavaWeb学习的详细笔记或教程,...

    17、Java 最常见的 200+ 面试题汇总+答案总结汇总1

    Spring Boot简化了Spring应用的初始搭建以及开发过程,而Spring Cloud是微服务架构的一系列解决方案,包括服务发现(Eureka)、负载均衡(Ribbon)、断路器(Hystrix)和服务网格(Spring Cloud Gateway)等。...

    制作调试过程及数据记录1

    从给出的日志中可以看到,Hibernate执行了一系列SQL语句,包括查询部门和员工,然后尝试更新和删除。如果在更新或删除时出现问题,可能是因为数据约束、事务处理不当或其他数据库层面的问题。因此,我们需要检查SQL...

    webx总结

    此外,Webx 还集成了常见的开发库,如Spring、Hibernate等,使得集成第三方服务变得更加简单。 【数据解析器(data resolver)研究】 在Webx中,数据解析器是一个重要的组件,它负责处理数据的获取、转换和展示。...

    springstruts的自己的总结文档

    SpringStruts是Java Web开发中一个常见的框架组合,它结合了Spring框架的依赖注入和管理功能与Struts2的MVC设计模式。这个总结文档旨在深入探讨这两个框架如何协同工作,帮助开发者构建高效、可维护的Web应用。 一...

Global site tag (gtag.js) - Google Analytics