微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

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

如何解决持久的父母 - 子女 - 孙子女 - 曾孙关系

我有 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 举报,一经查实,本站将立刻删除。