【问题标题】:Can I add non-Id fields in join table in Many to Many Relationship?我可以在多对多关系的联接表中添加非 Id 字段吗?
【发布时间】:2015-05-05 09:09:43
【问题描述】:

我在PersonAddress 表之间有多对多关系。

人:

@Entity
@Table(name = "PERSON_MTM", schema = "Examples")
public class Person 
{
@Id
@Column(name = "PERSON_ID")
private String personId;

@Column(name = "PERSON_NAME")
private String personName;

@ManyToMany(cascade = CascadeType.ALL, fetch = FetchType.LAZY)
@JoinTable(name = "PERSON_ADDRESS", schema = "KunderaExamples",joinColumns = { @JoinColumn(name = "PERSON_ID") }, inverseJoinColumns = {  @JoinColumn(name = "ADDRESS_ID") })
private Set<AddressMTM> addresses;

//setters and getters

}

地址:

@Entity
@Table(name = "ADDRESS_MTM", schema = "Examples")
public class Address
{
@Id
@Column(name = "ADDRESS_ID")
private String addressId;

@Column(name = "STREET")
private String street;

// setters and getters

}

我有一个名为 PERSON_ADDRESSjoinTable

  • 我可以将非 Id 字段添加到连接表吗?
  • 里面有没有 JPA 约束?

注意:我的问题不是Hibernate。我在问 代表JPA 2.1

【问题讨论】:

  • 你说的JPA约束是什么意思?
  • @swinkler JPA 约束意味着是否有任何文档建议或强制仅使用 Id 字段。
  • 我将 API 链接添加到 JoinTable/joinColumns,您可以在其中看到 JPA 没有任何限制。
  • 连接表的列将是双方的id列。这就是全部。如果您想要“其他”列,则创建一个中间实体(如 Stackoverflow 上有关该主题的许多其他帖子所示)

标签: java jakarta-ee jpa orm jpa-2.1


【解决方案1】:

您可以使用多个JoinColumms,例如包括 PERSON_NAME(如果这对您的逻辑有意义)

@ManyToMany(cascade = CascadeType.ALL, fetch = FetchType.LAZY)
@JoinTable(
    name = "PERSON_ADDRESS", 
    schema = "KunderaExamples",
    joinColumns = { 
      @JoinColumn(name="PERSON_NAME"),
      @JoinColumn(name = "PERSON_ID") }, 
    inverseJoinColumns = {  
      @JoinColumn(name = "ADDRESS_ID") })
private Set<AddressMTM> addresses;

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2020-08-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-05-23
    相关资源
    最近更新 更多