Java 如何避免使用@ElementCollection创建链接表?

Java 如何避免使用@ElementCollection创建链接表?,java,spring,hibernate,Java,Spring,Hibernate,我有两个实体-人和车。我决定使用@ElementCollection(仅存储车辆ID),而不是使用@OneToMany关系来映射它们,这样我的数据库上的负载就可以减少,而且每次我接人时都会额外取车 但是Hibernate一直在创建新的链接表,比如“person\u car\u id”。所以我的问题是-如何在'car'表中映射个人id @Entity public class Person implements Serializable { @Id private String

我有两个实体-。我决定使用@ElementCollection(仅存储车辆ID),而不是使用@OneToMany关系来映射它们,这样我的数据库上的负载就可以减少,而且每次我接人时都会额外取车

但是Hibernate一直在创建新的链接表,比如“person\u car\u id”。所以我的问题是-如何在'car'表中映射个人id

@Entity
public class Person implements Serializable {

    @Id
    private String id;

    @ElementCollection
    private Set<Long> carIds = new HashSet<>();
@实体
公共类Person实现可序列化{
@身份证
私有字符串id;
@元素集合
私有集carIds=newhashset();
来自:

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

它没有说它不会使用不同的表来存储基本值,只是使它更方便,而不必使用包装器

关于你的问题:

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

我不确定是否正确,但如果您只想在需要时取车,而不是在取
个人
实体时加载车,则可以使用延迟加载,这是使用
OneToMany
注释时的默认值。

来自:

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

它没有说它不会使用不同的表来存储基本值,只是使它更方便,而不必使用包装器

关于你的问题:

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


我不确定是否正确,但如果您只想在需要时取车,而不是在取
个人
实体时加载车,则可以使用延迟加载,这是使用
OneToMany
注释时的默认值。

如果您只映射它
@OneToMany
,则不会加载车实体。的获取类型为
@OneToMany
默认情况下是懒惰的。我想我只是没有指定当我从JPA存储库获取Person实例时,我只希望它具有cars ID。我被告知最好的方法是使用ElementCollection如果你只映射它
@OneToMany
,你的car实体将不会被加载。
@OneToMany
的获取类型是默认情况下,它是懒惰的。我想我只是没有指定当我从JPA存储库获取Person实例时,我只希望它有cars ID。有人告诉我,最好的方法是使用ElementCollectionIf,那么我就选择OneToMany。谢谢如果是,那么我就选择OneToMany。谢谢