我可以在多对多关系的联接表中添加非 Id 字段吗?
Posted
技术标签:
【中文标题】我可以在多对多关系的联接表中添加非 Id 字段吗?【英文标题】:Can I add non-Id fields in join table in Many to Many Relationship? 【发布时间】:2015-05-05 09:09:43 【问题描述】:我在Person
和Address
表之间有多对多关系。
人:
@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_ADDRESS
的 joinTable。
注意:我的问题不是
Hibernate
。我在问 代表JPA 2.1
【问题讨论】:
你说的JPA约束是什么意思? @swinkler JPA 约束意味着是否有任何文档建议或强制仅使用 Id 字段。 我将 API 链接添加到 JoinTable/joinColumns,您可以在其中看到 JPA 没有任何限制。 连接表的列将是双方的id列。这就是全部。如果您想要“其他”列,则创建一个中间实体(如 *** 上有关该主题的许多其他帖子所示) 【参考方案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;
【讨论】:
以上是关于我可以在多对多关系的联接表中添加非 Id 字段吗?的主要内容,如果未能解决你的问题,请参考以下文章