ActivationDocEntity parent = createEntity(1);
ActivationDocEntity child1 = createEntity(2);
ActivationDocEntity child2 = createEntity(3);;
parent.getChildren().add(child1);
repo.save(parent); //这一步完成后,parent包含一个child, child1
parent.getChildren().add(child2);
repo.save(parent); //这一步完成后,entity包含两个child:child1,child2
//现在想修改child2的状态
child2.setValue(12);
//由于设定了CascadeType.Merge,修改后希望通过保存parent来达到更新child2的目的。
repo.save(parent);
//然而结果发现数据库中child2的数据并没有被修改。
//问题就出现在这里, 被级联merge后的child2实例和原来不一样了
Assertions.assertNotEquals(parent.getChildren().get(1), child2);
//如果这时候希望更新child2,必须要在parent的children中重新获取,
//如下的步骤可以达到更新child2的目的。
parent.getChildren().get(1).setAckError("new ack error");
repo.save(parent);