持久的父母 - 子女 - 孙子女 - 曾孙关系

问题描述

我有 4 个实体。除了父母和曾孙之外,每个人都有多对一或一对多的关系。

是否可以通过在单个保存中保存以下关系,在这种情况下,“EntityA”存储库是什么?

我在本地尝试通过创建一个 json 版本来保存其中包含所有嵌套信息,但似乎发生的是我只能通过 entityA 存储库在一次保存中保存 EntityA 和 EntityB 并且不得不保存 EntityC和 EntityD 通过 EntityC 存储库单独调用

我在所有 OnetoMany 关系上都使用了 CASCADE.ALL,甚至用 CASCADE.MERGE + CASCADE.PERSIST 尝试过,但仍然出现相同的错误

我得到的错误是:

detached entity passed to persist: model.EntityC

我通过简单地执行 EntityA.setEntityBs() -> EntityB.setEntityCs() -> EntityC.setEntityDs() 来设置每个子实体

在这种情况下,最佳实践是什么?在 EntityA Repo 的单个调用中进行保存是可能的,还是最好的方法

@Entity
public class EntityA {

    //...

    @OnetoMany(mappedBy="")
    private Set<EntityB> entityBs;
    
    // getters and setters
}
@Entity
public class EntityB {
    
    //...
    @ManyToOne
    @JoinColumn(name="entityA_id",nullable=false)
    private EntityA entityA;

    @OnetoMany(mappedBy="")
    private Set<EntityC> entityCs;

    public EntityB() {}
    
    // getters and setters
}
@Entity
public class EntityC {
    
    //...

    @OnetoMany(mappedBy="")
    private Set<EntityD> entityDs;

    @ManyToOne
    @JoinColumn(name="entityB_id",nullable=false)
    private EntityB entityB;

    public EntityC() {}
    
    // getters and setters
}
@Entity
public class EntityD {
    
    //...

    @ManyToOne
    @JoinColumn(name="entityC_id",nullable=false)
    private EntityC entityC;

    public EntityD() {}
    
    // getters and setters
}

预先感谢您对此的任何回复

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)