org.hibernate.AnnotationException:未知的由普通类映射

时间:2018-06-21 08:51:54

标签: java hibernate jpa

我已经看过很多关于同一个论点的问题,但是我没有找到任何解决方案。 我有两个继承同一个类的类。

基本上:

@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,因为它存在。

谢谢

2 个答案:

答案 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; }

以上关联应该有效。