合并后是否获取实体JPA Id?

合并后是否获取实体JPA Id?,jpa,jpa-2.0,Jpa,Jpa 2.0,我有一个新创建的实体(已分离,因为尚未保存在数据库中)。此实体保存数据库中已经存在的另一个实体(但也已分离)。因此,我将使用em.merge(myNewEntity)来存储它 如果我想获得新创建的ID,我会在之后使用em.flush()。然后调用myNewEntity.getId()。通过persist我收到由DB/JPA生成的ID。使用合并,它不会。对象中的ID保持为null。这是为什么?合并操作的结果与持久化操作的结果不同-传递给合并的实体不会被管理。而是创建并返回实体的托管副本。这就是为什

我有一个新创建的实体(已分离,因为尚未保存在数据库中)。此实体保存数据库中已经存在的另一个实体(但也已分离)。因此,我将使用
em.merge(myNewEntity)
来存储它


如果我想获得新创建的ID,我会在之后使用
em.flush()
。然后调用
myNewEntity.getId()
。通过
persist
我收到由DB/JPA生成的ID。使用
合并
,它不会。对象中的ID保持为
null
。这是为什么?

合并操作的结果与持久化操作的结果不同-传递给合并的实体不会被管理。而是创建并返回实体的托管副本。这就是为什么原始的新实体无法获得id的原因

em.merge(newEntity);
Long id = newEntity.getId();
应该是

managedEntity = em.merge(newEntity);
Long id = managedEntity.getId();

很容易猜到水晶球,对吧?不过,谢谢。它被记录在案,并按照您的建议工作。