gpt4 book ai didi

hibernate - 如何在 hibernate 中识别对象是 transient 的还是分离的?

转载 作者:行者123 更新时间:2023-12-03 20:18:18 28 4
gpt4 key购买 nike

我知道 transient 实例意味着该实例是新创建的,并且其相应的行在数据库中不存在,因为分离的实例在数据库中有相应的条目,但目前与任何 session 都没有关联。

是否有任何方法可以使用 Session 上的任何方法或以编程方式在 hibernate 中使用其他方法来识别对象是 transient 的或分离的?

最佳答案

为了检查对象 e 是否在:-

  • 持久性上下文:- EntityManager.contains(e) 应该返回 true。
  • 分离状态:PersistenceUnitUtil.getIdentifier(e) 返回实体标识符属性的值。
  • transient :- PersistenceUnitUtil.getIdentifier(e) 返回 null

  • 您可以从 EntityManagerFactory 访问 PersistenceUnitUtil。

    有两个问题需要注意。首先,请注意标识符值可能不
    被分配并可用,直到刷新持久性上下文。二、 hibernate
    (与其他一些 JPA 提供程序不同)从不从 Persistence 返回 null-
    UnitUtil#getIdentifier() 如果您的标识符属性是原语(长而不是
    沿着)。

    关于hibernate - 如何在 hibernate 中识别对象是 transient 的还是分离的?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19474399/

    28 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com