双FK复合材料交叉柱的JPA解
我有一个表“A”,带有三个字段(a1、a2、a3)的复合PK,其中两个(a1、a2)是另一个表“B”的复合FK,因此我使用两个@Embeddeble类来实现这一点:双FK复合材料交叉柱的JPA解,jpa,Jpa,我有一个表“A”,带有三个字段(a1、a2、a3)的复合PK,其中两个(a1、a2)是另一个表“B”的复合FK,因此我使用两个@Embeddeble类来实现这一点: @Entity @Table(name = "A") public class A implements java.io.Serializable { private static final long serialVersionUID = 1L; @EmbeddedId private APk aPk;
@Entity
@Table(name = "A")
public class A implements java.io.Serializable {
private static final long serialVersionUID = 1L;
@EmbeddedId
private APk aPk;
@MapsId(aPartPk)
@ManyToOne
@JoinColumn(name = "a1")
@JoinColumn(name = "a2")
private B b;
'''other columns'''
}
@Embeddable
public class APk implements java.io.Serializable {
private static final long serialVersionUID = 1L;
private APartPk aPartPk;
private String a3;
}
@Embeddable
public class APartPk implements java.io.Serializable {
private static final long serialVersionUID = 1L;
private String a1;
private String a2;
}
@Entity
@Table(name = "B")
public class B implements java.io.Serializable {
private static final long serialVersionUID = 1L;
@EmbeddedId
private APartPk aPartPk;
'''other columns'''
}
但是现在我有一个新的要求,我需要另外两个字段(a1,a3)作为另一个复合FK,并将它们引用到表C中,有解决方案吗?欢迎发表任何意见。我想在这里回答我自己的问题- 要将另外两个字段(a1、a3)作为另一个复合FK并将其参考表C,只需添加以下代码:
@MapsId(aPk) -----------------------------> use the whole PK as the @MapsId
@ManyToOne
@JoinColumn(name = "a1")
@JoinColumn(name = "a3")
private C c;