在使用休眠 5.0.9 的应用程序中有嵌套的父子关系,其中父是关系所有者,如下所示。
表: -
ParentEntity
@OneToMany(fetch = FetchType.LAZY, cascade = CascadeType.ALL)
@JoinColumn(name = "parent_id")
@OrderBy("listOrder ASC, dateCreated ASC")
private Set<ChildEntity> childCollection;
ChildEntity
@OneToMany(fetch = FetchType.LAZY, cascade = CascadeType.ALL)
@JoinColumn(name = "child_id")
@OrderBy("col_id ASC, list_order ASC")
private Set<GrandChildEntity> grandChildCollection;
GrandChildEntity
我想按如下方式更新父母的孩子和孙子:-
从 DB 中读取现有父级并获取所有子级及其孙子级的集合。将现有的 grandChild 从一个孩子移动到另一个孩子,因此要求只需要更新 GrandChild 的孩子的引用,而不是必须不触及 GrandChild 数据库中的所有列。
我正在尝试使用休眠合并来执行此操作,但它抛出了异常:
级联将重新保存已删除的对象(从关联中删除已删除的对象)
如何从现有子集合中删除孙子集合并在单个事务中附加到其他子集合?