我有一个新创建的实体(已分离,因为尚未保存在数据库中).此实体包含已存在于db中的另一个实体(但也已分离).因此,我会em.merge(myNewEntity)用来存储它.
如果我想获得新创建的ID,我会在em.flush()之后使用.然后我调用myNewEntity.getId().与persist我接收由DB/JPA generted的ID.有merge,它没有.对象中的ID仍然存在null.这是为什么?
kos*_*tja 16
操作的结果merge与persist操作不同 - 传递给的实体merge不会被管理.而是创建并返回实体的托管副本.这就是原始新实体不会获得id的原因.而不是
em.merge(newEntity);
Long id = newEntity.getId();
Run Code Online (Sandbox Code Playgroud)
它应该是
managedEntity = em.merge(newEntity);
Long id = managedEntity.getId();
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
4294 次 |
| 最近记录: |