Hibernate:更新空子表

时间:2017-08-17 04:48:29

标签: java hibernate

@OneToMany(mappedBy="columnOne", orphanRemoval=true, cascade=CascadeType.ALL) @LazyCollection(LazyCollectionOption.FALSE) private List<Constraint> constraints = new ArrayList<Constraint>();

每当父子记录更新时,子表记录也应该更新。

当我厌倦了session.SaveOrUpdate()时,父表记录得到了更新,但每次插入新记录时子表都没有更新,导致重复数据

当遇到session.merge()时,得到错误,A collection with cascade="all-delete-orphan" was no longer referenced by the owning entity instance: com作为约束可能为null,因为并不总是子表有数据

要解决此问题,请尝试设置空集合,但这会导致数据库中的许多行具有空值。

即使子表数据可能为空,有没有办法更新父和子

1 个答案:

答案 0 :(得分:0)

  

每当父子记录更新后,子表记录   也应该得到更新。

Hibernate脏检查会为您做到这一点,您需要管理所有实体,默认情况下,任何管理实体的更改都会检查所有管理实体及其属性,请查看此link以进一步检查信息

  

当我厌倦了session.SaveOrUpdate()时,得到了父表记录   每次插入新记录时都会更新子表,而不是   更新导致重复数据

我猜你的子实体没有被管理,也没有设置id值,所以你的孩子会被级联(因为这是你想要的设置cascadetype)并且将作为新记录保存在你的数据库中。< / p>