Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/jpa/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
双FK复合材料交叉柱的JPA解_Jpa - Fatal编程技术网

双FK复合材料交叉柱的JPA解

双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;

我有一个表“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;

    @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;