我已经看过很多关于同一个论点的问题,但是我没有找到任何解决方案。 我有两个继承同一个类的类。
基本上:
@MappedSuperclass
public abstract class MyGeneric {
private String idGeneric;
public String getIdGeneric() {
return idGeneric;
}
public void setIdGeneric(final String idGeneric) {
this.idGeneric = idGeneric;
}
}
@Entity
public class Child extends MyGeneric {
// [some fields]
}
@Entity
public class Parent extends MyGeneric {
@OneToOne(mappedBy = "idGeneric")
private Child child;
}
但是该应用程序无法运行,因为:
org.hibernate.AnnotationException: Unknown mappedBy in: mypackage.Parent.child, referenced property unknown: mypackage.Child.idGeneric
我不明白为什么它可以找到属性Child.idGeneric
,因为它存在。
谢谢
答案 0 :(得分:1)
由于您没有映射关联的反面,因此不能使用mappedBy。 将您的映射替换为以下内容:
@OneToOne
@JoinColumn(name = "idGeneric")
private Child child;
答案 1 :(得分:0)
@Entity
public class Child extends MyGeneric {
// [some fields]
@OneToOne(mappedBy = "child")
private Parent parent;
}
@Entity
public class Parent extends MyGeneric {
@OneToOne(mappedBy = "parent")
private Child child;
}
@Entity
public class Child extends MyGeneric {
// [some fields]
@OneToOne(mappedBy = "child")
private Parent parent;
}
@Entity
public class Parent extends MyGeneric {
@OneToOne(mappedBy = "parent")
private Child child;
}
以上关联应该有效。