我支持在持久操作期间经常将大量数据保存到数据库的应用程序。应用程序运行平稳,数据量较少。但是,当我尝试持续存储大量数据时,经过30分钟的时间后,它会抛出hibernate异常“分离的实体传递给持久化”
我四处寻找各种解释,发现这可能是由于两个原因造成的:
我确信这不是代码问题,因为应用程序一直运行而没有数据量较少的问题。
假设这是一个超时问题,我不确定定义超时的位置,以及决定何时应该分离对象的超时时间。
任何帮助将不胜感激。我们使用Hibernate,Seam和JBoss 7来运行应用程序
答案 0 :(得分:1)
如果您正在使用Seam Managed Persistence Context(所谓的SMPC),那么实体管理器(以及hibernate会话)可能会存储在会话上下文中,因此超时可能是Conversation上下文,这可以在组件中调整.xml包含以下内容......
security.yml
以毫秒为单位
答案 1 :(得分:0)
经过大量的试验和错误后,我发现可以通过修改standalone.xml中的coordinator-environment default-timeout来更改它,如下所示:
<subsystem xmlns="urn:jboss:domain:transactions:1.3"> <core-environment> <process-id> <uuid/> </process-id> </core-environment> <recovery-environment socket-binding="txn-recovery-environment" status-socket-binding="txn-status-manager"/> <coordinator-environment default-timeout="300"/> </subsystem>