hibernate在更新子实体时不会更新子实体

yi0zb3m4  于 2021-07-12  发布在  Java
关注(0)|答案(0)|浏览(243)

如果有必要的话,我正在使用hibernate和oracledb以及java11。
我有个触发器可以更新我手机里的手机 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 触发!我希望它触发更新的实体和它的所有祖先触发器(孙子没有触发器)。
我在网上搜索了两天,却找不到有用的东西。我试着在上面创建一个新的触发器 grandson 或者 spouse 但是它在数据库中抛出了一个异常,因为“检测到并回滚了活动的自治事务”。
谢谢:)

暂无答案!

目前还没有任何答案,快来回答吧!

相关问题