【发布时间】:2018-04-26 07:45:28
【问题描述】:
我有 2 个实体(父母和孩子),它们之间存在 OneToMany 关系。
父有子列表,子有父字段。
孩子有
@ManyToOne(fetch = FetchType.LAZY, cascade = {CascadeType.MERGE, CascadeType.PERSIST})
在父字段中。
父母有
@OneToMany(mappedBy="parent", cascade = CascadeType.ALL, orphanRemoval = true)
在子列表中。
我想找到一种方法将一个孩子的父母替换为另一个父母。 (即将 ChildA 的 Parent 从 ParentA 更改为 ParentB)
因为我想关注父列表,所以我想从列表中删除孩子。 问题是,即使我首先将 ChildA 添加到 ParentB 的列表中,将 ChildA 的 Parent 字段设置为 ParentB,然后才将其从 ParentA 的 Child 列表中删除,因为它以某种方式完全删除了 Child(显然是因为 OrphanRemoval)
如何在不更改休眠配置的情况下进行此交换 并且与从 ParentA 的列表中删除(OrphanRemoval 等)?
编辑
我宁愿避免使用 entityManager.flush()
【问题讨论】:
-
可能有助于理解内部工作:stackoverflow.com/questions/34004855/…