【发布时间】:2011-06-30 14:14:46
【问题描述】:
我有一个测试用例,我使用 entitymanager.find 方法通过 id 获取对象。然后我尝试使用 entityManager.contains() 检查对象是否处于托管状态。但包含错误。因此,当一个对象处于持久状态时,包含返回 true。
【问题讨论】:
标签: jpa
我有一个测试用例,我使用 entitymanager.find 方法通过 id 获取对象。然后我尝试使用 entityManager.contains() 检查对象是否处于托管状态。但包含错误。因此,当一个对象处于持久状态时,包含返回 true。
【问题讨论】:
标签: jpa
如果您在实体管理器中调用 find by id,则对象将在事务中被管理。否则它会分离,您必须调用 entityMangerInstance.merge() 来管理对象。
【讨论】:
find-方法可以在没有事务的情况下调用,但是,在这种情况下,如果使用带有 "事务范围的持久性上下文”。如果 EntityManager 具有“扩展的持久性上下文”,则结果将处于 托管 状态。如果在事务中调用 find 方法,则在这两种情况下都将管理生成的实体。
有关“事务范围”与“扩展”持久性上下文的更多信息,请参阅here。
【讨论】: