暂时查到资料显示可能是hibernate版本的Bug问题  一直在找机会总结一下这类问题,可还一直没来得及  汗颜呀...

解决方案 »

  1.   

    异常提示也是说是hibernate里出现的问题,找了好多资料但是一直都解决不了、、、
      

  2.   

    我在springsource community论坛里看到这个相关问题讨论和解决途径,不过都是英文的,给大家摘录一段:
    TO Rama: a masterly idea :-) I've resolved this problem!
     but I did not follow your idea, but thanks for your reply
    I switched my hibernate3.0 to hibernate 3.2.6 just as bdangubic said and it worked well 
    这哥们回复的大概意思是说,使用hibernate3.2.6替换了项目中的hibernate3.0,然后这个问题就解决了。可是我把项目中hibernate版本换掉之后,还是会出现这种问题,我现在项目框架采用的是Struts2.1+Spring3.0+hibernate3.1。因为论坛中没有提到项目除了hibernate做持久层,还是用其他什么架构,所以我现在也不敢随意揣摩。
    如果大家有什么好的解决途径,希望慷慨分享一下哦!!
      

  3.   

    你说的那个帖子我也看过了,也试了,我之前的hibernate是3.2.7的,替换之后也不行。我那问题虽然已经解决了,但是是将里面原来的方法分离出来了。我那update方法里面调用了一个方法,那方法也执行了update的操作,但是没有commit。也就是说我那问题相当于是:update   update   --   commit。调用的那方法执行update操作之后没有commit,所以hibernate提示说启用了一个不安全的会话。
      

  4.   

    使用commit的前提是事务是自己管理的  可是我的系统中事务都交给了Spring来管理的 所以不会涉及到事务问题导致的不安全会话
      

  5.   

    问题原因终于找到了,不过不知道你们的问题是不是这个原因。
    原因就是在Hibernate3的事件处理过程中对原始数据进行了访问或处理,导致update与save产生冲突,如果原始数据不是对象而是Integer、String等常规数据类型是没有关系,一旦你调用了many-to-one或者one-to-many之类的就会抛这个异常出来。
    所以我最后做日志的时候把many-to-one或者one-to-many的属性去掉不记录就没问题了!
      

  6.   

    汗颜呀,同志们,现在才回来探讨这个问题。我最后采取曲线救国了。由于系统后台要求关联业务操作的细粒度审计日志,而基于Hibernate事件驱动的切面操作无法达到我们审计日志的要求,最后采取了硬编码这种最蠢最笨的方式做审计日志。我现在倒是想重开一帖,和大家讨论一下做后台审计日志的通用做法,既要考虑到系统业务问题,让普通用户(非IT从业人员)也能看懂系统审计日志;也要考虑到审计日志的粒度问题,粒度可以越小越好,可以有记录操作时间,操作数据以及数据的前后变化;操作人信息。最好是审计日志的使用和记录的信息达到可配置状态。就在这和大家讨论这个问题了,愿意讨论者人人有分,虽然分不怎么多,只想和大家共同进步!!
      

  7.   

    汗颜呀,同志们,现在才回来探讨这个问题。我最后采取曲线救国了。由于系统后台要求关联业务操作的细粒度审计日志,而基于Hibernate事件驱动的切面操作无法达到我们审计日志的要求,最后采取了硬编码这种最蠢最笨的方式做审计日志。我现在倒是想重开一帖,和大家讨论一下做后台审计日志的通用做法,既要考虑到系统业务问题,让普通用户(非IT从业人员)也能看懂系统审计日志;也要考虑到审计日志的粒度问题,粒度可以越小越好,可以有记录操作时间,操作数据以及数据的前后变化;操作人信息。最好是审计日志的使用和记录的信息达到可配置状态。就在这和大家讨论这个问题了,愿意讨论者人人有分,虽然分不怎么多,只想和大家共同进步!!
      

  8.   

    奶奶的个熊的,这个问题找了一天终于给解决了,你说容易吗,这种错是由于hibernate缓存机制引起的,当你查询对像出来的时候,可它的子对象没有立即存在,解决方案有两种哟,一种是你
    system.out.println(com.iwork.basic.model.IOrganization.childOrg.size())
    或者你直接输出它然后再存储,当然还有一种就是
      

  9.   

    我也遇到这样的问题。但是没影响功能,不知道怎么解决,我的也是one—to—many。感觉和这个是有点关系
      

  10.   

    这个问题你最后怎么解决的?????我也遇到一个类似的问题,我的仓库表和备货表是一对多的关系,我的数据库里如果备货去的数据是空的的话,就可以查询出仓库的类容,如果我给备货区表添加数据后就查不出来了,,,还报错!!!!!!!!The server encountered an internal error () that prevented it from fulfilling this request.(这是网页上显示的错误信息)[org.hibernate.engine.loading.LoadContexts-132][http-8080-3][358229] - fail-safe cleanup (collections) : org.hibernate.engine.loading.CollectionLoadContext@3f2507<rs=oracle.jdbc.driver.OracleResultSetImpl@979ede>
    09-0513:16:35[org.hibernate.engine.loading.CollectionLoadContext-348][http-8080-3][358230] - On CollectionLoadContext#cleanup, localLoadingCollectionKeys contained [1] entries
    这是eclipse上显示的错误