【发布时间】:2011-11-03 09:04:32
【问题描述】:
我得到了这两个实体:
@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(“列 'libcod' 指定了两次”)。但是在定义 JoinColumn 时不能使用“insertable = false”(“不允许在属性中混合可插入和不可插入的列”)。
有什么方法可以定义这些对象+关系,以便 Hibernate 自动管理这些列?
【问题讨论】:
标签: java hibernate jpa persistence