use*_*071 5 inheritance hibernate
@MappedSuperclass
public abstract class AbstractBaseModel{ }
@MappedSuperclass
public class Person extends AbstractBaseModel { }
@Entity
public class APerson extends Person { }
@Entity
public class BPerson extends Person { }
@Entity
public class Course extends AbstractBaseModel {
@ManyToOne
@JoinColumn(name ="person")
private Person person;
}
Run Code Online (Sandbox Code Playgroud)
以上结构将给出一个例外:
Caused by: org.hibernate.AnnotationException: @OneToOne or @ManyToOne on
Course references an unknown entity: Person
Run Code Online (Sandbox Code Playgroud)
它表示你不能在映射中使用Person,因为它不是一个具体的实体.我如何实现这样的继承方案?
很简单,您将@MappedSuperclass注释更改Person为@Entity
@MappedSuperclass仅在您明确不希望类可查询或属于关系的一部分时使用。@Entity其他地方。
一个很好的启发式决定是看看您的超类是否abstract(如果是)使用@MappedSuperclass,就像您在AbstractBaseModel
| 归档时间: |
|
| 查看次数: |
3620 次 |
| 最近记录: |