java - Hibernate 在更新子实体时不会更新子实体
问题描述
如果它很重要,我正在使用带有 java 11 的 oracle DB 的休眠。
我有一个触发器,它将更新我的parent
和child
表格中的一个单元格,当表格更新时将触发。
我遇到了这个问题,当我更新我的grandson
实体时,它不会更新我的child
实体,但会更新我的parent
实体。
我希望 hibernate 向上更新已更改实体的行及其每个祖先。
我的代码中的所有更新都是在Parent
实体上进行的。这意味着如果我想更改grandson
名称,我parent
将从数据库中查询我的名称,我将更改所需字段并使用saveAndFlush
.
我的代码:
class Parent {
@Id
@Gene...
private Long id;
@OneToMany(fetch = FetchType.EAGER, cascade = Cascade.ALL, orphanRemoval = true)
@JoinColumn(name = "parent_id", nullable = false)
@Fetch(FetchMode.SUBSELECT)
private List<Child> children;
}
class Child {
@Id
@Gene...
private Long id;
@OneToMany(fetch = FetchType.EAGER, cascade = Cascade.ALL, orphanRemoval = true)
@JoinColumn(name = "child_id")
@Fetch(FetchMode.SUBSELECT)
private List<Grandson> grandsons = new ArrayList<>();
@OneToOne(fetch = FetchType.EAGER, cascade = Cascade.ALL, orphanRemoval = true)
@JoinColumn(name = "spouse_id", referencedColumnName)
private Person spouse;
}
class Grandson {
@Id
@Gene...
private Long id;
String name;
}
当我更新grandson
或spouse
它会parent
触发触发器,但不是child
触发器!我希望它触发更新的实体及其所有祖先触发器(孙子没有触发器)。
我在网上搜索了 2 天,找不到有用的东西。我试图在 grandson
or上创建一个新触发器,spouse
但由于“检测到并回滚了活动的自主事务”,它在数据库中引发了异常。
谢谢 :)
解决方案
推荐阅读
- python - 查找匹配条件的下一行
- python - For 循环 - 过滤多个数据帧 - 行/列
- c++ - 声音未正确播放,嗡嗡声而不是录制的声音 - Portaudio
- python - 如何检索存储字符串的 HDF5 数据集
- r - 有没有一种方法可以在 R 中扩展矩阵
- python - 从 Robot 框架中的内部侦听器更新设置
- ios - 在 UITextField 的两个文本之间创建一个扩散的过渡
- telerik - Telerik报告水平和垂直表格边界线问题
- javascript - 我是否必须为 AWS S3 上的每个图像获取签名 URL?
- python - 在 LaTeX 中循环遍历类似数组的结构