0

我有两个实体 - PersonCar。我决定使用@ElementCollection仅存储汽车ID )而不是使用@OneToMany关系映射它们,这样我就可以减少数据库的负载,并且在我获取Person时额外获取汽车。

但是 Hibernate 不断创建新的链接表,如'person_car_ids'。所以我的问题是 - 我如何在“汽车”表 中映射人员 ID ?

@Entity
public class Person implements Serializable {

    @Id
    private String id;

    @ElementCollection
    private Set<Long> carIds = new HashSet<>();
4

1 回答 1

2

来自JPA 维基

ElementCollection 可用于定义与 Embeddable 对象或基本值(如字符串集合)的一对多关系。[...] ElementCollection 值始终存储在单独的表中

它并没有说它不会使用不同的表来存储您的基本值,只是让它更方便而无需使用包装器。

对于你的问题:

我决定使用@ElementCollection(仅存储汽车ID),这样我的数据库上的负载就可以减少,而且每当我获取Person 时都可以获取汽车。

不确定我是否正确,但如果您只想在需要时获取汽车而不是在获取person实体时加载它们,您可以使用延迟加载,这是使用OneToMany注释时的默认设置。

于 2020-06-08T08:23:24.237 回答