【问题标题】:jpa hibernate when is an object managedjpa hibernate什么时候管理对象
【发布时间】:2011-06-30 14:14:46
【问题描述】:

我有一个测试用例,我使用 entitymanager.find 方法通过 id 获取对象。然后我尝试使用 entityManager.contains() 检查对象是否处于托管状态。但包含错误。因此,当一个对象处于持久状态时,包含返回 true。

【问题讨论】:

    标签: jpa


    【解决方案1】:

    如果您在实体管理器中调用 find by id,则对象将在事务中被管理。否则它会分离,您必须调用 entityMangerInstance.merge() 来管理对象。

    【讨论】:

      【解决方案2】:

      find-方法可以在没有事务的情况下调用,但是,在这种情况下,如果使用带有 "事务范围的持久性上下文”。如果 EntityManager 具有“扩展的持久性上下文”,则结果将处于 托管 状态。如果在事务中调用 find 方法,则在这两种情况下都将管理生成的实体。

      有关“事务范围”与“扩展”持久性上下文的更多信息,请参阅here

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2014-10-10
        • 1970-01-01
        • 2012-08-31
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多