附加实体是否必须在JPA中合并?

时间:2011-09-12 12:20:26

标签: java jpa

只要我只处理附加管理实体,我就永远不需要使用EntityManager#merge()这是正确的吗?换句话说,在附加被管实体上调用merge()无效?

或者是否存在合并有助于达成目的的情况?我发现这个名字暗示我可以用它来处理OptimisticLockException ......:)

编辑:简单来说,我对托管实体的理解是,在交易结束时,其属性/字段的修改会持久保存到数据库中。

2 个答案:

答案 0 :(得分:17)

规范声明:

  

如果X是托管实体,则合并将忽略它   但是,合并操作会与实体级联   如果这些关系已经来自X的关系引用   使用级联元素值cascade=MERGE或注释   cascade=ALL注释。

答案 1 :(得分:0)

很多年后....

关于规格

  

如果X是一个受管实体,则合并操作会忽略它,   但是,合并操作将级联到由引用的实体   X中的关系(如果这些关系已用注释)   级联元素值的级联= MERGE或级联= ALL注释。

考虑一下...

  • 对象X受管理,并与对象Y具有OneToMany关系 Cascade = MERGE
  • 最初创建X类型的对象时,没有相关的Y。
  • 对象X被保留。
  • 随后创建了对象Y,并将引用添加到X。

据我了解,合并是在此阶段执行以保留所有更改的正确操作,因此在某些情况下可以在托管实体上调用合并。

enter image description here