JPA OneToMany-Mapping 没有多方映射类

she*_*tem 4 java hibernate jpa

在使用 JPA 2.1 和 Hibernate 的 Spring Boot 应用程序中,有两个感兴趣的 (PostgreSQL) 表:

实体外部_id
-- --
序列号 序列号 序列号
...实体_id int
... external_id int

实体和 external_ids 之间的关系显然是 OneToMany,我也想在 JPA 映射中使用它。执行此操作的一个简单方法是为每个表创建 @Entity-mappings 并使用 @OneToMany-relation:


@Entity
public class Entity {
  @Id
  private Integer id;

  @OneToMany(mappedBy= "entityId")
  private Set<ExternalId> externalIds;
}

@Entity
public class ExternalId {
  @Id
  private Integer id;

  @ManyToOne
  private Integer entityId;

  private Integer externalId;
}

Run Code Online (Sandbox Code Playgroud)

但由于表 external_ids 仅保存实体每个成员的数字列表,因此我不想对表 external_id 进行显式映射,而是立即映射 external_id.external_id 的值:


@Entity
public class Entity {
  @Id
  private Integer id;

  @OneToMany(???)
  private Set<Integer> externalIds;
}
Run Code Online (Sandbox Code Playgroud)

JPA 2.1 是否可以实现这一点?如果可以,如何实现?

Dra*_*vic 5

@ElementCollection您可以为此目的使用:

@ElementCollection
@CollectionTable(name = "TableName", joinColumns=@JoinColumn(name = "JoinColumnName"))
private Set<Integer> externalIds;
Run Code Online (Sandbox Code Playgroud)

  • 刚刚在 JavaPersistence wikibook 中找到了类似的解释。给定的示例正是我想要的,并且一旦应用于我的域即可工作:https://en.wikibooks.org/wiki/Java_Persistence/ElementCollection#Basic_Collections 这也使您的新答案正确。谢谢你的时间!:) (2认同)