gpt4 book ai didi

java - 如何在多个实体中使用通用实体

转载 作者:行者123 更新时间:2023-12-02 01:23:54 25 4
gpt4 key购买 nike

我有一个实体地址,并且该实体由另外两个实体拥有。

例如

@JoinColumnmappedByUserCompany 使用外键。如何解决用户和公司工作地址的这个问题?

我尝试过 @JoinColumnmappedBy,但没有运气。

@Entity
class User {
...
@OneToMany
private List<Address> address;
...
}

@Entity
class Company{
...
@OneToMany
private List<Address> address;
...
}

@Entity
class Address {
private String street;
private String city;
private String state;

private String entityType; // User or Company
private String entityId; // id of User or Company
}

最佳答案

一个 - 如果您不被需要所有者类型和地址 ID 的数据库模式所困扰,那么您应该考虑“连接”表。您可以使用@JoinTable为Hibernate进行注释,如下所示:

@Entity
class Company {
...
@OneToMany
@JoinTable( name="company_address",
joinColumns={@JoinColumn(name="idCompany")},
inverseJoinColumns={@JoinColumn(name="idAddress"} )
List<Address> addresses;
}

您需要添加 company_address 表(以及另一个 user_address 表),该表将包含 idCompany 和 idAddress 外键列。 Hibernate 将完成剩下的工作。

除此之外,使用像这样的连接表进行一对多还允许多个实体(用户、公司等)引用相同地址,这不会如果地址只有一个所有者,则可能。

关于java - 如何在多个实体中使用通用实体,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57598543/

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