【问题标题】:How does JPA know that entity is new or detached?JPA 如何知道实体是新的还是分离的?
【发布时间】:2012-05-18 20:50:23
【问题描述】:

如果实体被删除或管理,它将被存储(或其哈希)在当前 EntityManger 的持久化上下文中,因此 JPA 知道它的状态。但是 JPA 实现如何知道给定的实体是新的还是分离的?检查@ID 是否为空并不总是有效。它是特定于 JPA 提供程序的吗? 换句话说,JPA 如何知道它需要在合并期间抛出 javax.persistence.EntityExistsException

【问题讨论】:

    标签: jpa


    【解决方案1】:

    这是Hibernate does it

    • 如果生成了标识符,则使用标识符的存在
    • 如果没有,并且实体是版本化的(用于乐观锁定),则使用时间戳或版本
    • 如果上述不可行,查询二级缓存或数据库,知道标识符是否已经存在。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2011-02-16
      • 2013-01-10
      • 1970-01-01
      • 2017-06-05
      • 1970-01-01
      • 2015-08-10
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多