由于超时错误,JPA EntityManager hibernate异常“分离的实体传递给持久化”

时间:2017-02-08 04:23:22

标签: hibernate jboss7.x seam entitymanager hibernate-entitymanager

我支持在持久操作期间经常将大量数据保存到数据库的应用程序。应用程序运行平稳,数据量较少。但是,当我尝试持续存储大量数据时,经过30分钟的时间后,它会抛出hibernate异常“分离的实体传递给持久化”

我四处寻找各种解释,发现这可能是由于两个原因造成的:

  1. 错误编写的代码/错误定义的实体
  2. 在一定的超时后分离的对象
  3. 我确信这不是代码问题,因为应用程序一直运行而没有数据量较少的问题。

    假设这是一个超时问题,我不确定定义超时的位置,以及决定何时应该分离对象的超时时间。

    任何帮助将不胜感激。我们使用Hibernate,Seam和JBoss 7来运行应用程序

2 个答案:

答案 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>