0
我拿到這2個實體:JPA - 使用複合PK的和FK的和定義關係
@javax.persistence.Entity
public class Book {
@javax.persistence.EmbeddedId
private BookPK id;
private String title;
@javax.persistence.ManyToOne(fetch = javax.persistence.FetchType.LAZY)
@javax.persistence.JoinColumns({
@javax.persistence.JoinColumn(name = "LNGCOD", referencedColumnName = "LNGCOD"),
@javax.persistence.JoinColumn(name = "LIBCOD", referencedColumnName = "LIBCOD") })
private Language language;
}
@javax.persistence.Entity
public class Language {
@javax.persistence.EmbeddedId
private LanguagePK id;
private String name;
}
與由PK的:
@Embeddable
public class BookPK implements Serializable {
private Integer bookcod;
private Integer libcod;
}
@Embeddable
public class LanguagePK implements Serializable {
private Integer lngcod;
private Integer libcod;
}
如果我嘗試創建一個新的圖書,並堅持它,我得到一個異常告訴我libcod在insert語句中找到兩次(「Column'libcod'指定了兩次」)。但是在定義JoinColumn時不能使用「insertable = false」(「在屬性中不允許插入和不可插入的列混合」)。
有什麼辦法來定義這些對象+關係,所以列由Hibernate自動管理? (我特別想到libcod)。
謝謝。
是的,這是我採用的解決方案,但我仍然希望有更優雅的東西。我想這將不得不做。 – ccc