hibernate - 删除主实体时如何将子实体保留在数据库中
问题描述
我正在使用 Hibernate,并且在我的实体中有一对多的关系。
public MyClass{
@OneToMany(fetch = FetchType.EAGER, cascade = CascadeType.ALL)
private Set<MyObject> myObject= new HashSet<>();
// some other fields
}
MyObject 实际上不仅是子实体。它是我的应用程序中的主要实体。因此,当我删除 MyClass 实体时,我不想删除数据库 MyObject 表中的 myObject。
我的用法是这样的:
1)持久化MyClass实体,所以MyObject实体也被持久化了。2)稍后我需要删除 MyClass 实体,但需要保留在第一步中保留的 MyObject 记录。
我尝试使用CascadeType.PERSIST
,但它创建了一个对 MyObject 表的选择查询,因为它找不到给定的 myObject 对象的记录,所以它抛出异常。因此我正在使用CascadeType.ALL
. 但是此时,当我通过 JpaRepository 的 deleteById 方法删除实体时,它也会删除 MyObject 实体。
如何在不删除 MyObject 实体的情况下执行删除?
解决方案
推荐阅读
- java - 在java中将原始类型数组转换为List的任何内置方法
- c++ - OpenCV WebAssembly
- pandas - 循环遍历熊猫数据框的所有元素?
- python - Visual Studio 代码将工作代码突出显示为错误
- python - 如何在 matplotlib 中更改 xticks 的旋转?
- hibernate - 带有@JoinTable 的单向@OneToMany 不更新连接表
- python - matplotlib 图例中的上标格式
- javascript - 在我手动刷新页面之前,加载功能窗口不会触发?
- javascript - 为什么这会同时显示数组和对象的行为
- php - PHP / Laravel - Tesseract OCR - 文件的完整路径