Java 如何避免使用@ElementCollection创建链接表?
我有两个实体-人和车。我决定使用@ElementCollection(仅存储车辆ID),而不是使用@OneToMany关系来映射它们,这样我的数据库上的负载就可以减少,而且每次我接人时都会额外取车 但是Hibernate一直在创建新的链接表,比如“person\u car\u id”。所以我的问题是-如何在'car'表中映射个人idJava 如何避免使用@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
@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。谢谢