gpt4 book ai didi

java - 如何在JPA中实现复杂的实体关系

转载 作者:行者123 更新时间:2023-12-02 03:11:31 24 4
gpt4 key购买 nike

我有一个实体家族,看起来像这样:

Company (1    ->    n)  CompanyContact  (n   <-    1) Contact
\ /
\ /
\ (1 -> n) User ( 1 - 1) /

重申一下,

公司与 CompanyContact(它只是链接公司、联系人和参数的实体)具有一对多关系,与用户具有一对多关系

联系人与 CompanyContact 具有 OneToMany 关系,与 User 具有 OneToOne 关系

随着我们业务需求的细化,这种结构一直在稳步增长,并且 future 更多的实体将使业务需求变得更加复杂。

可以通过以下示例演示该问题:

当我创建用户时,我在保留之前设置了正确的公司和联系人,并且用户被正确保留。然而,数据库中的公司和联系人实体仍然不知道它们与新创建的用户的关系。

如果我想更新所有实体,我真的需要每次都更新整个 Company-CompanyContact-Contact-User 链吗?有更好的方法吗?

我尝试在用户端的关系映射中应用不同的级联策略,例如

@OneToOne(级联 = CascadeType.ALL)私有(private)联系方式;

但这仍然不会更新公司和联系人方面。

最佳答案

我认为你的类(class)设计得不好。

尝试添加targetEntity

(Optional) The entity class that is the target of the association. Optional only if the collection property is defined using Java generics. Must be specified otherwise.

ma​​ppedBy

The field that owns the relationship. Required unless the relationship is unidirectional.

也许这些会有所帮助:

oracle docs

jpa-hibernate-synchronize-bidirectional-

关于java - 如何在JPA中实现复杂的实体关系,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56991601/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com