Java 冬眠赢了';更新子实体时不更新它';s子实体
我正在使用hibernate和OracleDB以及Java11,如果这很重要的话 我得到了一个触发器,它将更新我的Java 冬眠赢了';更新子实体时不更新它';s子实体,java,spring,hibernate,Java,Spring,Hibernate,我正在使用hibernate和OracleDB以及Java11,如果这很重要的话 我得到了一个触发器,它将更新我的父表和子表中的一个单元格,该单元格将在更新表时触发 我遇到了这样一个问题:当我更新我的孙子实体时,它不会更新我的子实体,但会更新我的父实体 我希望hibernate更新已更改实体的行及其每个祖先 我的代码中的所有更新都是在父实体上进行的。这意味着,如果我想更改孙子的名字,我将从数据库中查询我的父项,我将更改想要的字段,并使用saveAndFlush保存我的新实体 我的代码: 类父类{
父表
和子表
中的一个单元格,该单元格将在更新表时触发
我遇到了这样一个问题:当我更新我的孙子
实体时,它不会更新我的子
实体,但会更新我的父
实体
我希望hibernate更新已更改实体的行及其每个祖先
我的代码中的所有更新都是在父实体上进行的。这意味着,如果我想更改孙子
的名字,我将从数据库中查询我的父项
,我将更改想要的字段,并使用saveAndFlush
保存我的新实体
我的代码:
类父类{
@身份证
@基因。。。
私人长id;
@OneToMany(fetch=FetchType.EAGER,cascade=cascade.ALL,orphan=true)
@JoinColumn(name=“parent\u id”,nullable=false)
@Fetch(FetchMode.SUBSELECT)
私人名单儿童;
}
班童{
@身份证
@基因。。。
私人长id;
@OneToMany(fetch=FetchType.EAGER,cascade=cascade.ALL,orphan=true)
@JoinColumn(name=“child\u id”)
@Fetch(FetchMode.SUBSELECT)
private List grands=new ArrayList();
@OneToOne(fetch=FetchType.EAGER,cascade=cascade.ALL,orphan=true)
@JoinColumn(name=“配偶id”,referencedColumnName)
私人配偶;
}
班孙{
@身份证
@基因。。。
私人长id;
字符串名;
}
当我更新孙子
或配偶
时,它将触发父
触发器,但不会触发子
触发器!
我想让它触发更新的实体,它的所有祖先都触发(孙子没有触发器)
我在网上搜索了两天,没有找到有效的东西。我试图在孙子
或配偶
上创建一个新触发器,但它在数据库中抛出了一个异常,因为“检测到并回滚了活动的自治事务”
谢谢:)