我有一个有两个查找值的类(一个用于名称,一个用于类型)
public class someAttr {
private Long someAttrId;
private Long projectId;
private Lookup typeLookupValue;
private Lookup nameLookupValue;
getters & setter...
@OneToOne(fetch=FetchType.LAZY, cascade=CascadeType.ALL)
@JoinColumn(name = "type_lk_id", referencedColumnName = "lk_id", insertable = false, updatable = false)
public LookupValue getTypeLookupValue() {
return typeLookupValue;
}
public void setTypeLookupValue(Lookup typeLookupValue) {
this.typeLookupValue= typeLookupValue;
}
@OneToOne(fetch=FetchType.LAZY, cascade=CascadeType.ALL)
@JoinColumn(name = "name_lk_id", referencedColumnName = "lk_id", insertable = false, updatable = false)
public LookupValue getNameLookupValue() {
return nameLookupValue;
}
public void setNameLookupValue(Lookup nameLookupValue) {
this.nameLookupValue= nameLookupValue;
}
问题是在不同的someAttr对象之间共享相同的name_lk_id。 每次我运行它我得到: “org.hibernate.HibernateException:找到了多个具有给定标识符的行”。
我可以使用projectId获取属于特定someAttr的nameLookupValue,而不是使用相同的“lk_id”获取多个Lookup对象吗?
答案 0 :(得分:2)
一个someAttr实例与两个Lookup值实例相关联。这不是一对一的关系。您需要使用One-to-Many关系。您可以在类中使用辅助方法从List / Set中检索approrpiate Lookup实例。