【问题标题】:Extract the primary key from a entity object in JPA 2.0?从 JPA 2.0 中的实体对象中提取主键?
【发布时间】:2010-10-07 16:24:04
【问题描述】:

假设我们有一个实体对象。有没有办法从中提取主键?

我想做这样的事情:

public static Object extractPrimaryKey(EntityManager em, Object obj) {
    return em.giveMeThePrimaryKeyOfThisEntityObject(obj);
}

这样做的原因是获取分离实体的附加副本:

public static Object attach(EntityManager em, Object obj) {
    return em.find(obj.getClass(), extractPrimaryKey(em, obj));
}

有可能吗? (我使用的是 EclipseLink 2.1)

【问题讨论】:

    标签: java orm jpa eclipselink jpa-2.0


    【解决方案1】:

    也许这会起作用:

    em.getEntityManagerFactory().getPersistenceUnitUtil().getIdentifier(obj);
    

    【讨论】:

      【解决方案2】:

      这样做的原因是获取分离实体的附加副本:

      你为什么不直接使用EntityManager#merge(T)??

      MyEntity detached = ...
      MyEntity attached = em.merge(detached);
      

      这有什么问题?

      【讨论】:

      • @iimuhin 是的,有道理:)
      猜你喜欢
      • 2023-04-01
      • 1970-01-01
      • 2020-05-16
      • 2014-02-19
      • 1970-01-01
      • 2011-03-20
      • 2016-05-24
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多