我有一个看起来像这样的实体家族:
Company (1 -> n) CompanyContact (n <- 1) Contact
\ /
\ /
\ (1 -> n) User ( 1 - 1) /
要重申,
Company与CompanyContact(这是一个链接Company,Contact和参数的实体)具有OneToMany关系,而与User之间具有OneToMany关系
Contact与CompanyContact具有OneToMany关系,与User具有OneToOne关系
随着我们对业务需求的细化,这种结构一直在稳步增长,并且将来随着其他实体的出现,它们将变得更加复杂。
然后可以通过以下示例演示该问题:
创建用户时,在设置持久性之前,我设置了正确的公司和联系人,并且该用户也被正确持久化。但是,数据库中的Company和Contact实体仍然忽略了它们与新创建的User的关系。
如果我想更新所有实体,是否真的需要每次更新整个Company-CompanyContact-Contact-User链?有更好的方法吗?
我尝试将不同的级联策略应用于用户端的关系映射,例如
@OneToOne(级联= CascadeType.ALL) 私人联系人;
但这仍然不会更新公司和联系人。
答案 0 :(得分:0)
我认为您的课程设计得不好。
尝试添加 targetEntity
(可选)作为关联目标的实体类。 仅当使用Java定义collection属性时才是可选的 泛型。否则必须指定。
和映射
拥有关系的字段。除非有关系,否则为必需 是单向的。
也许这些会有所帮助: