我有一个新创建的实体(已分离,因为尚未保存在数据库中)。该实体拥有数据库中已经存在的另一个实体(但也已分离)。因此,我会用em.merge(myNewEntity)
它来存储它。
如果要获取新创建的ID,请稍后使用em.flush()
。然后我调用myNewEntity.getId()
。与persist
我接收由DB / JPA generted的ID。使用merge
,则不会。对象中的ID保留null
。这是为什么?
该merge
操作的结果与该操作的结果不同persist
-传递给该实体的实体merge
不被管理。而是创建并返回实体的托管副本。这就是为什么原始新实体不会获得ID的原因。所以代替
em.merge(newEntity);
Long id = newEntity.getId();
它应该是
managedEntity = em.merge(newEntity);
Long id = managedEntity.getId();
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句