`

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....

    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