SSH系统异常hibernate.AssertionFailure: collection[] was not processed by flush()

问题描述

话说问题之前,先把异常堆栈贴出来:19:28:17,671ERRORAssertionFailure:22-anassertionfailureoccured(thismayindicateabuginHibernate,butismorelikelyduetounsafeuseofthesession)org.hibernate.AssertionFailure:collection[com.iwork.basic.model.IOrganization.childOrg]wasnotprocessedbyflush()atorg.hibernate.engine.CollectionEntry.postFlush(CollectionEntry.java:205)atorg.hibernate.event.def.AbstractFlushingEventListener.postFlush(AbstractFlushingEventListener.java:333)atorg.hibernate.event.def.DefaultFlushEventListener.onFlush(DefaultFlushEventListener.java:28)atorg.hibernate.impl.SessionImpl.flush(SessionImpl.java:1000)atorg.hibernate.impl.SessionImpl.managedFlush(SessionImpl.java:338)atorg.hibernate.transaction.JDBCTransaction.commit(JDBCTransaction.java:106)atorg.springframework.orm.hibernate3.HibernateTransactionManager.doCommit(HibernateTransactionManager.java:558)atorg.springframework.transaction.support.AbstractPlatformTransactionManager.processCommit(AbstractPlatformTransactionManager.java:540)atorg.springframework.transaction.support.AbstractPlatformTransactionManager.commit(AbstractPlatformTransactionManager.java:510)atorg.springframework.transaction.interceptor.TransactionAspectSupport.commitTransactionAfterReturning(TransactionAspectSupport.java:310)atorg.springframework.transaction.interceptor.TransactionInterceptor.invoke(TransactionInterceptor.java:117)atorg.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:185)atorg.springframework.aop.framework.JdkDynamicAopProxy.invoke(JdkDynamicAopProxy.java:209)at$Proxy25.updateEntity(UnknownSource)atcom.iwork.basic.action.OrganizationAction.updateOrg(OrganizationAction.java:124)atsun.reflect.NativeMethodAccessorImpl.invoke0(NativeMethod)atsun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)atsun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)atjava.lang.reflect.Method.invoke(Method.java:597)atcom.opensymphony.xwork2.DefaultActionInvocation.invokeAction(DefaultActionInvocation.java:440)atcom.opensymphony.xwork2.DefaultActionInvocation.invokeActionOnly(DefaultActionInvocation.java:279)atcom.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:242)atcom.util.LoginInterceptor.intercept(LoginInterceptor.java:27)atcom.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:236)atcom.opensymphony.xwork2.interceptor.DefaultWorkflowInterceptor.doIntercept(DefaultWorkflowInterceptor.java:163)atcom.opensymphony.xwork2.interceptor.MethodFilterInterceptor.intercept(MethodFilterInterceptor.java:87)atcom.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:236)atcom.opensymphony.xwork2.validator.ValidationInterceptor.doIntercept(ValidationInterceptor.java:249)atorg.apache.struts2.interceptor.validation.AnnotationValidationInterceptor.doIntercept(AnnotationValidationInterceptor.java:68)atcom.opensymphony.xwork2.interceptor.MethodFilterInterceptor.intercept(MethodFilterInterceptor.java:87)atcom.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:236)atcom.opensymphony.xwork2.interceptor.ConversionErrorInterceptor.intercept(ConversionErrorInterceptor.java:122)atcom.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:236)atcom.opensymphony.xwork2.interceptor.ParametersInterceptor.doIntercept(ParametersInterceptor.java:195)atcom.opensymphony.xwork2.interceptor.MethodFilterInterceptor.intercept(MethodFilterInterceptor.java:87)atcom.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:236)atcom.opensymphony.xwork2.interceptor.ParametersInterceptor.doIntercept(ParametersInterceptor.java:195)atcom.opensymphony.xwork2.interceptor.MethodFilterInterceptor.intercept(MethodFilterInterceptor.java:87)atcom.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:236)atcom.opensymphony.xwork2.interceptor.StaticParametersInterceptor.intercept(StaticParametersInterceptor.java:148)atcom.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:236)atorg.apache.struts2.interceptor.CheckboxInterceptor.intercept(CheckboxInterceptor.java:93)atcom.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:236)atorg.apache.struts2.interceptor.FileUploadInterceptor.intercept(FileUploadInterceptor.java:235)atcom.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:236)atcom.opensymphony.xwork2.interceptor.ModelDrivenInterceptor.intercept(ModelDrivenInterceptor.java:89)atcom.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:236)atcom.opensymphony.xwork2.interceptor.ScopedModelDrivenInterceptor.intercept(ScopedModelDrivenInterceptor.java:128)atcom.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:236)atorg.apache.struts2.interceptor.ProfilingActivationInterceptor.intercept(ProfilingActivationInterceptor.java:104)atcom.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:236)atorg.apache.struts2.interceptor.debugging.DebuggingInterceptor.intercept(DebuggingInterceptor.java:267)atcom.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:236)atcom.opensymphony.xwork2.interceptor.ChainingInterceptor.intercept(ChainingInterceptor.java:126)atcom.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:236)atcom.opensymphony.xwork2.interceptor.PrepareInterceptor.doIntercept(PrepareInterceptor.java:138)atcom.opensymphony.xwork2.interceptor.MethodFilterInterceptor.intercept(MethodFilterInterceptor.java:87)atcom.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:236)atcom.opensymphony.xwork2.interceptor.I18nInterceptor.intercept(I18nInterceptor.java:148)atcom.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:236)atorg.apache.struts2.interceptor.ServletConfigInterceptor.intercept(ServletConfigInterceptor.java:164)atcom.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:236)atcom.opensymphony.xwork2.interceptor.AliasInterceptor.intercept(AliasInterceptor.java:128)atcom.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:236)atcom.opensymphony.xwork2.interceptor.ExceptionMappingInterceptor.intercept(ExceptionMappingInterceptor.java:176)atcom.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:236)atorg.apache.struts2.impl.StrutsActionProxy.execute(StrutsActionProxy.java:52)atorg.apache.struts2.dispatcher.Dispatcher.serviceAction(Dispatcher.java:468)atorg.apache.struts2.dispatcher.ng.ExecuteOperations.executeAction(ExecuteOperations.java:77)atorg.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter.doFilter(StrutsPrepareAndExecuteFilter.java:76)atorg.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235)atorg.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)atorg.springframework.orm.hibernate3.support.OpenSessionInViewFilter.doFilterInternal(OpenSessionInViewFilter.java:174)atorg.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:77)atorg.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235)atorg.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)atorg.springframework.web.filter.CharacterEncodingFilter.doFilterInternal(CharacterEncodingFilter.java:78)atorg.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:77)atorg.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235)atorg.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)atorg.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:233)atorg.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:191)atorg.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:127)atorg.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:102)atorg.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109)atorg.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:298)atorg.apache.coyote.http11.Http11Processor.process(Http11Processor.java:857)atorg.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:588)atorg.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:489)atjava.lang.Thread.run(Thread.java:619)

这里,介绍一下问题出现的背景:为方便后台管理,我使用了机构(IOrganization)与用户(IUser)的一对多双向关联映射,机构(IOrganization)的自关联映射。之前为了做系统审计日志,考虑到日志粒度问题,我采用了基于Hibernate3的事件框架做系统审计日志,日志配置如下:<propertyname="eventListeners"><map><entrykey="post-update"><refbean="auditLog"/></entry><entrykey="post-delete"><refbean="auditLog"/></entry><entrykey="post-insert"><refbean="auditLog"/></entry></map></property>

当我向机构中增加用户时,问题就出现了,而且问题很蹊跷:当我将审计日志配置注销掉,操作能正常完成;一启用审计日志配置,就报出上述错误。为这个问题纠结了好几天,在程序中断点跟踪,也没找到出错位置,实在是没辙了。真诚求解释,希望技术大牛们不吝赐教!!!

解决方案

解决方案二:
这么久了居然没有兄弟姐妹和我一起讨论这个话题......
解决方案三:
这段时间我在解决这个问题时候已经有所收获。等闲下来和大家分享一下我的新的体会!!
解决方案四:
LZ现在拿出来说说啊?
解决方案五:
暂时查到资料显示可能是hibernate版本的Bug问题一直在找机会总结一下这类问题,可还一直没来得及汗颜呀...
解决方案六:
异常提示也是说是hibernate里出现的问题,找了好多资料但是一直都解决不了、、、
解决方案七:
我在springsourcecommunity论坛里看到这个相关问题讨论和解决途径,不过都是英文的,给大家摘录一段:TORama:amasterlyidea:-)I'veresolvedthisproblem!butIdidnotfollowyouridea,butthanksforyourreplyIswitchedmyhibernate3.0tohibernate3.2.6justasbdangubicsaidanditworkedwell

这哥们回复的大概意思是说,使用hibernate3.2.6替换了项目中的hibernate3.0,然后这个问题就解决了。可是我把项目中hibernate版本换掉之后,还是会出现这种问题,我现在项目框架采用的是Struts2.1+Spring3.0+hibernate3.1。因为论坛中没有提到项目除了hibernate做持久层,还是用其他什么架构,所以我现在也不敢随意揣摩。如果大家有什么好的解决途径,希望慷慨分享一下哦!!
解决方案八:
引用6楼rogerxp的回复:

我在springsourcecommunity论坛里看到这个相关问题讨论和解决途径,不过都是英文的,给大家摘录一段:JavacodeTORama:amasterlyidea:-)I'veresolvedthisproblem!butIdidnotfollowyouridea,butthanksforyourreplyIswitche……

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

引用6楼rogerxp的回复:我在springsourcecommunity论坛里看到这个相关问题讨论和解决途径,不过都是英文的,给大家摘录一段:JavacodeTORama:amasterlyidea:-)I'veresolvedthisproblem!butIdidnotfollowyouridea,butthanksf……

使用commit的前提是事务是自己管理的可是我的系统中事务都交给了Spring来管理的所以不会涉及到事务问题导致的不安全会话
解决方案十:
问题原因终于找到了,不过不知道你们的问题是不是这个原因。原因就是在Hibernate3的事件处理过程中对原始数据进行了访问或处理,导致update与save产生冲突,如果原始数据不是对象而是Integer、String等常规数据类型是没有关系,一旦你调用了many-to-one或者one-to-many之类的就会抛这个异常出来。所以我最后做日志的时候把many-to-one或者one-to-many的属性去掉不记录就没问题了!
解决方案十一:
汗颜呀,同志们,现在才回来探讨这个问题。我最后采取曲线救国了。由于系统后台要求关联业务操作的细粒度审计日志,而基于Hibernate事件驱动的切面操作无法达到我们审计日志的要求,最后采取了硬编码这种最蠢最笨的方式做审计日志。我现在倒是想重开一帖,和大家讨论一下做后台审计日志的通用做法,既要考虑到系统业务问题,让普通用户(非IT从业人员)也能看懂系统审计日志;也要考虑到审计日志的粒度问题,粒度可以越小越好,可以有记录操作时间,操作数据以及数据的前后变化;操作人信息。最好是审计日志的使用和记录的信息达到可配置状态。就在这和大家讨论这个问题了,愿意讨论者人人有分,虽然分不怎么多,只想和大家共同进步!!
解决方案十二:
汗颜呀,同志们,现在才回来探讨这个问题。我最后采取曲线救国了。由于系统后台要求关联业务操作的细粒度审计日志,而基于Hibernate事件驱动的切面操作无法达到我们审计日志的要求,最后采取了硬编码这种最蠢最笨的方式做审计日志。我现在倒是想重开一帖,和大家讨论一下做后台审计日志的通用做法,既要考虑到系统业务问题,让普通用户(非IT从业人员)也能看懂系统审计日志;也要考虑到审计日志的粒度问题,粒度可以越小越好,可以有记录操作时间,操作数据以及数据的前后变化;操作人信息。最好是审计日志的使用和记录的信息达到可配置状态。就在这和大家讨论这个问题了,愿意讨论者人人有分,虽然分不怎么多,只想和大家共同进步!!
解决方案十三:
美女,现在还可以讨论下这个问题吗。到底是怎么解决的呢。
解决方案十四:
我也这样,解决不了
解决方案十五:
奶奶的个熊的,这个问题找了一天终于给解决了,你说容易吗,这种错是由于hibernate缓存机制引起的,当你查询对像出来的时候,可它的子对象没有立即存在,解决方案有两种哟,一种是你system.out.println(com.iwork.basic.model.IOrganization.childOrg.size())或者你直接输出它然后再存储,当然还有一种就是
解决方案:
还一种就是Hibernate.
解决方案:
我也遇到这样的问题。但是没影响功能,不知道怎么解决,我的也是one—to—many。感觉和这个是有点关系
解决方案:
这个问题你最后怎么解决的?????我也遇到一个类似的问题,我的仓库表和备货表是一对多的关系,我的数据库里如果备货去的数据是空的的话,就可以查询出仓库的类容,如果我给备货区表添加数据后就查不出来了,,,还报错!!!!!!!!Theserverencounteredaninternalerror()thatpreventeditfromfulfillingthisrequest.(这是网页上显示的错误信息)[org.hibernate.engine.loading.LoadContexts-132][http-8080-3][358229]-fail-safecleanup(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]-OnCollectionLoadContext#cleanup,localLoadingCollectionKeyscontained[1]entries这是eclipse上显示的错误
解决方案:

解决方案:
你可一检查一下你的空构造方法,如果没有空构造方法,或者空构造方法出错都会报这样的错误!!!!

时间: 2024-10-08 11:26:38

SSH系统异常hibernate.AssertionFailure: collection[] was not processed by flush()的相关文章

ssertion ailure-org.hibernate.AssertionFailure问题的解决

问题描述 org.hibernate.AssertionFailure问题的解决 当在ssh项目中使用compass后就出现出现这样的问题了,不知道如何解决,望好心人给提示一下解决方法!

J2EE系统异常的处理准则

异常的处理是每个Java程序员时常面对的问题,但是很多人没有原则,遇到异常也不知道如何去处理,于是遇到检查异常就胡乱 try...catch...一把,然后e.printStackTrace()一下了事,这种做法通常除了调试排错有点作用外,没任何价值.对于运行时异常,则干脆置之不理. 原因是很多开发者缺乏对异常的认识和分析,首先应该明白Java异常体系结构,一种分层继承的关系,你必须对层次结构熟烂于心: Throwable(必须检查) Error(非必须检查) Exception(必须检查) R

常见的windows xp系统异常故障及解决途径

  板载声卡发音不正常?快速开机后鼠标无法移动?当你遇到这些系统故障时候是不是觉得很崩溃呢?今天小编就给大家盘点那些常见的windows xp系统异常故障及解决途径,希望对那些还在坚守windows xp系统的朋友们有点帮助. 一.板载声卡发音不正常 现在很多主板都附带了AC97的声卡,如果您的机器里的板载声卡是软声卡,那么有可能会在挂起到硬盘后,第二次快速开机的时候,发现声音不正常.笔者见过一块精英的SIS735主板上附带的软声卡就是如此--不仅在win xp快速开机后发音不正常,在windo

入侵检测-有关基于数据挖掘的系统异常检测的问题

问题描述 有关基于数据挖掘的系统异常检测的问题 各位大神你们好,本人弱X大四待毕业大学生一枚,毕业设计涉及到使用数据挖掘技术来 实现一个系统的异常检测,但是有很多问题不知道如何下手,所以在这请教诸位: 1.用于学习和挖掘的系统实时日志信息怎样提取出来 2.不知道有没有一种数据挖掘工具是可以编译运行自己的算法代码或者可以调用自己的算 法的呢 先在这谢过诸位~

【SSH系列】-- Hibernate持久化对象的三种状态

       在上一篇博文中,小编主要简单的介绍了[SSH系列]--hibernate基本原理&&入门demo,今天小编来继续介绍hibernate的相关知识, 大家知道,Java对象的生命周期,是从通过new语句创建开始,到不再被任何引用变量引用结束,结束后它占用的内存将被JVM垃圾回收机制收回.在hibernate中持久化类的对象可以划分为三种状态,分别是瞬态,持久态,脱管态.       一.瞬态(Transient),也叫临时态.处于这种状态的对象具备的特征如下:       a.

sql query-J2EE SSH框架中 hibernate映射文件hbm.xml相关问题

问题描述 J2EE SSH框架中 hibernate映射文件hbm.xml相关问题 使用hbm.xml文件时,有遇到一个标签,在标签中我只要HQL语句加上小于<号MyEclipse就提示错误,那我该如何添加小于号呢,请问大家是怎么回事,如何解决? 具体如下图 解决方案 需要转义的. < > 分别表示 < 和 >! 如果还有其他的,可以查看CSDN移动问答 解决方案二: 打开方式的问题 在MyEclipse的资源树里右击该文件,"Open as"选择合适的方

【SSH系列】---Hibernate的基本映射

       开篇前言       在前面的博文中,小编分别介绍了[SSH系列]-- hibernate基本原理&&入门demo,通过这篇博文,小伙伴们对hibernate已经有了基本的了解,以及hibernate的核心,采用对象化的思维操作关系型数据库.     [SSH系列]-- Hibernate持久化对象的三种状态 ,通过这篇博文的讲解,小伙伴们了解到java对象的生命周期,是从通过new语句创建开始,到不再被任何引用变量引用结束,结束后它占用的内存将被JVM垃圾回收机制收回.在h

ssh项目中hibernate查询时出问题

问题描述 ssh项目中hibernate查询时出问题 大神快来帮忙看看 解决方案 http://blog.csdn.net/merry3602/article/details/7063226 解决方案二: 报错SysAdmin未映射,重点是配置文件对不对. 首先检查你画线的地方路径写对了没有,其次要去检查SysAdmin.hbm.xml里面class标签的name属性值有没有打对,点路径有没有写对,最好把schema属性删除. 最后,看一下其他的.hbm.xml里有没有引用到SysAdmin的,

org.hibernate.AssertionFailure

问题描述 org.hibernate.AssertionFailure:nullidincom.lhd.ssms.model.Courseentry(don'tflushtheSessionafteranexceptionoccurs)org.hibernate.event.def.DefaultFlushEntityEventListener.checkId(DefaultFlushEntityEventListener.java:78)org.hibernate.event.def.Defa