![](/img/trans.png)
[英]How to resolve IdClass Property not found issue when creating composite primary key using JPA
[英]How to name the @ForeignKey when using @IdClass composite primary key?
@Entity
@IdClass(MyPK.class)
public class SubEntity {
@Id private int id;
@Id private String name;
}
@Entity
public class ParentEntity {
@OneToOne(cascade = ALL)
@JoinColumn(name="fk_sub_id", foreignKey = @ForeignKey(name="fk_sub"))
private SubEntity sub;
}
Caused by: org.hibernate.AnnotationException: A Foreign key refering SubEntity from ParentEntity has the wrong number of column. should be 2
由於@JoinColumn
注釋,這會失敗。 但是我如何為復合PK寫它呢? 我必須使用此批注在hibernate
自動生成期間設置foreignkey約束名稱。
對於復合鍵,您應該使用@JoinColumns
@JoinColumns(value = {
@JoinColumn(name = "fk_sub_id", referencedColumnName = "id"),
@JoinColumn(name = "fk_name", referencedColumnName = "name")},
foreignKey = @ForeignKey(name = "fk_sub"))
更新:
在這種情況下,Hibernate似乎沒有遵循JPA 2.1規范。 您還需要另外包含hibernates自己的注釋,該注釋已棄用但仍然可以運行。 這應該添加如下:
@JoinColumns(value = {
@JoinColumn(name = "fk_sub_id", referencedColumnName = "id"),
@JoinColumn(name = "fk_name", referencedColumnName = "name")},
foreignKey = @ForeignKey(name = "fk_sub"))
@org.hibernate.annotations.ForeignKey(name = "fk_sub")
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.