Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/392.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
Java 具有两个查找值的Hibernate OnetoOne映射_Java_Hibernate_Persistence - Fatal编程技术网

Java 具有两个查找值的Hibernate OnetoOne映射

Java 具有两个查找值的Hibernate OnetoOne映射,java,hibernate,persistence,Java,Hibernate,Persistence,我有一个类,它有两个查找值(一个用于名称,一个用于类型) 问题是不同的someAttr对象之间共享相同的名称\u lk\u id。 每次运行时,我都会得到: “org.hibernate.HibernateException:找到多个具有给定标识符的行” 我是否可以使用projectId获取属于特定someAttr的nameLookupValue,而不是获取具有相同“lk_id”的多个查找对象?一个someAttr实例与两个查找值实例关联。这不是一对一的关系。为此,您需要使用一对多关系。您可以在

我有一个类,它有两个查找值(一个用于名称,一个用于类型)

问题是不同的someAttr对象之间共享相同的名称\u lk\u id。 每次运行时,我都会得到: “org.hibernate.HibernateException:找到多个具有给定标识符的行”


我是否可以使用projectId获取属于特定someAttr的nameLookupValue,而不是获取具有相同“lk_id”的多个查找对象?

一个someAttr实例与两个查找值实例关联。这不是一对一的关系。为此,您需要使用一对多关系。您可以在类中使用helper方法从列表/集合中检索适当的查找实例。

非常感谢,也许你们俩为我节省了大量时间(可能还有我的很多头发;)
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;
}