`

Hibernate 错误原因总结

阅读更多

1、错误: object references an unsaved transient instance  save the transient instance before flushing
  
 错误原因:
  
  只是生成的对象的id==null,因此,系统以为TraveCode对象存在,而TraveCode.id=null ,所以抛出此异常


 if(job.getWorkCondition().getTraveCode()!=null && job.getWorkCondition().getTraveCode().getId()==null){
  job.getWorkCondition().setTraveCode(null);
 }

 

 

2、解决a different object with the same identifier value was already associated with the session错误  

        错误原因: 因为在hibernate中同一个session里面有了两个相同标识但是是不同实体

 

只需要进行session.clean()操作就可以解决了,但是你在clean操作后面又进行了saveOrUpdate(object)操作,有可能会报出"Found two representations of same collection",

 

其中这篇文章帮助最大http://opensource.atlassian.com/projects/hibernate/browse/HHH-509

 

最后 通过session.refresh(object)方法就可以解决了,注意,当object不是数据库中已有数据的对象的时候,不能使用 session.refresh(object)因为refresh是从hibernate的session中去重新取object,

 

如果session中没有这个对象,则会报错所以当你使用saveOrUpdate(object)之前还需要判断一下

 

当然这个问题最容易解决的办法还是使用Hibernate里面自带的merge() 方法。不过我始终觉得碰到问题就用这种软件自带的非常用方法(和saveOrUpdate(),save(),update()相比)感觉十分不爽。

 

 

3、 Hibernate 中使用  oracle 中的 函数

         可使用

         case when 条件  then 结果1 else  结果2

 

     public List unassignAccountStatistics(Session ses,IndexPager pager){


           StringBuffer innerHQL = new StringBuffer(" from Company com inner join com.clerkBD cBD join cBD.department dep inner join com.accounts account ");


           innerHQL.append(" where (com.source=5 or com.source is null)");


           innerHQL.append(" group by cBD.id,cBD.name,dep.name");


           Query innerQuery = ses.createQuery("select new map(dep.name as depName,cBD.id as empId,cBD.name as empName,count(com.id)

                as        total,                                        sum(account.state) as  readNum,count(account.applyPublish) as applyNum, 

             sum(case when account.deleted=1 then 1 else 0 end) as delNum ) "  + innerHQL.toString());

 


           Query countQuery = ses.createQuery("select count(*) from Employee emp where emp = some (select bd from Company com inner join

                         com.clerkBD bd where             com.source=5 or com.source is null)");


           HibernateUtil.pagingQuery(pager, innerQuery, countQuery);    


           List innerList = innerQuery.list();  


          return innerList;
         }

 

4、net.sf.hibernate.PropertyNotFoundException: Could not find a getter for sitetitle in class dlog4j.formbean.SiteForm

     错误原因:

         由于 POJO 中的 getXXX() 方法的 名称 和 POJO对应的 XML 文件中对应的 属性 名称不一致

   

5、错误1:org.hibernate.HibernateException: createCriteria is not valid without active transaction
解决:错误行是这样的       Criteria criteria = (persondao.getSession())
根据提示 改成这样
Transaction tx = persondao.getSession().beginTransaction();
Criteria criteria = (persondao.getSession());
……
tx.commit();
原因:Criteria不能脱离事务运行

 

6、: Exception in thread "main" org.hibernate.MappingException: Repeated column in mapping for entity: lizhx.n11n.test.User column: room_id (should be mapped with insert="false" update="false")
原因:在 XXX.hbm.xml 里有重复的映射
解决:  
<property   name="RoomId"   column="room_id"   type="integer"   not-null="false"   length="11"/>
<many-to-one name="room" column="room_id" class="lizhx.n11n.test.Room" cascade="all" outer-join="false"/>
由于hibernate自动生成和手动添加的映射room_id影射重复导致的错误~
只需要把<property>映射删除即可……

分享到:
评论

相关推荐

    hibernate关联关系总结

    通过合理的关联设计,可以简化对象模型与数据库之间的转换,提高开发效率,减少潜在的错误。在实际项目中,开发者应根据业务需求灵活选择关联类型,并合理配置各种属性,以实现最佳的数据管理效果。

    hibernate错误解决方案

    本文将针对几个常见的Hibernate错误进行深入分析,并提供相应的解决方法。这些错误包括但不限于 `org.springframework.orm.ObjectRetrievalFailureException`、`org.springframework.beans.factory....

    Hibernate_学习总结

    ### Hibernate学习总结与知识点详解 #### 一、Hibernate产生的背景及优势 Hibernate作为一个持久层框架,它的诞生解决了传统编程模式中业务逻辑与数据库访问代码混杂的问题,这不仅导致程序结构混乱,降低代码的...

    spring+struts+hibernate项目debug总结.rar

    《Spring+Struts+Hibernate(SSH)项目调试精要》 在Java Web开发领域,Spring、Struts和Hibernate组成的SSH框架组合是应用广泛的技术栈。...通过不断实践和总结,我们可以将这些经验转化为宝贵的专业技能。

    Hibernate关联关系总结

    了解和熟练掌握这些关联关系,能够帮助开发者更好地利用Hibernate进行数据库操作,提高开发效率并减少错误。在设计数据库模型时,还需要考虑业务需求、数据规模和性能要求,以做出最佳的设计决策。

    hibernate错误汇总

    总结:Hibernate作为一款强大的ORM框架,虽然简化了与数据库的交互,但同时也引入了一些特有的错误。理解和解决这些错误需要深入理解Hibernate的工作原理以及数据库事务和并发控制。遇到问题时,检查配置文件、...

    Hibernate配置常见错误

    总结,Hibernate配置错误主要集中在SessionFactory创建、实体类配置、数据库连接、属性映射、懒加载、HQL查询和事务管理等方面。解决这些问题需要对Hibernate的工作原理有深入理解,并熟练掌握其配置细节。通过以上...

    使用Spring、Hibernate、Struts的一些错误总结.txt

    在IT领域,特别是Java开发中,使用Spring、Hibernate和Struts框架进行项目开发时,开发者可能会遇到各种各样的错误和异常。以下是对给定文件中提及的一些常见问题的详细解析和解决方案,旨在帮助开发者理解并避免...

    struts\Hibernate 学习总结.doc

    1. Hibernate产生的原因:Hibernate的出现主要是为了解决JDBC编程中的一些问题,如代码和SQL混杂,不利于维护;SQL语句使得程序失去面向对象的特性;数据模型变化需要手动修改大量SQL;以及SQL错误在编译时无法检查...

    Could not roll back Hibernate transaction.doc

    然而,在使用Hibernate时,可能会遇到事务回滚失败的问题,本文将详细介绍该问题的原因和解决方法。 一、问题描述 在使用Hibernate时,可能会遇到以下错误信息: Could not roll back Hibernate transaction; ...

    hibernate3 hibernate3

    总结起来,Hibernate3是Java开发中的强大工具,它极大地简化了数据库操作,提高了开发效率。理解并熟练掌握Hibernate3的核心概念和使用方法,对于任何Java开发者来说都是必要的技能。在实际项目中,正确配置和使用...

    hibernate大纲

    如果有错误,回滚事务。 7. 关闭资源:关闭 Session 和 SessionFactory,释放相关资源。 **实体类和映射文件** 1. **实体类**:Java 类,代表数据库中的表。通常使用 `@Entity` 注解标识,并通过 `@Table` 定义...

    org.hibernate.HibernateException: No Hibernate Session bound to thread

    错误原因 "No Hibernate Session bound to thread" 错误信息通常是因为 Hibernate Session 未被绑定到当前线程所致。在 Hibernate 中,每个线程都需要一个 Session 对象来与数据库交互。如果未绑定 Session 到线程...

    Hibernate4.0,Hibernate5.2,Hibernate5.6 jar包

    总结来说,这三个版本的Hibernate jar包代表了Hibernate框架在不同阶段的发展和进步。从4.0到5.6,不仅在功能上得到了增强,而且在性能和易用性方面也有了显著提升。对于需要使用Hibernate的开发者来说,选择合适的...

    Hibernate开发各类项目的技术总结

    **Hibernate开发各类项目的技术总结** Hibernate,作为Java领域的一个强大对象关系映射(ORM)框架,极大地简化了数据库操作,让开发者可以专注于业务逻辑而非繁琐的SQL语句。在我一年半的开发经验中,我逐渐积累了...

    hibernate校验 jar包

    此外,Hibernate校验支持国际化,可以为不同的语言提供友好的错误消息。 总结 Hibernate校验作为Hibernate框架的一部分,极大地增强了Java对象的数据验证能力。通过使用JSR-303标准,开发者可以方便地在实体类中...

    Hibernate多表关联配置及错误解决方法

    总结来说,配置Hibernate的多表关联时,需注意以下几点: 1. 在两个关联的实体类中都要添加相应的关联注解。 2. 确保注解位置一致,要么都在属性上,要么都在setter方法上。 3. 实现`Serializable`接口,特别是使用...

Global site tag (gtag.js) - Google Analytics