gpt4 book ai didi

Hibernate 继承 - 引用用 @MappedSuperclass 注释的实体

转载 作者:行者123 更新时间:2023-12-03 12:30:44 26 4
gpt4 key购买 nike

@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;
}

上面的结构会给出一个异常(exception):
Caused by: org.hibernate.AnnotationException: @OneToOne or @ManyToOne on    
Course references an unknown entity: Person

它说你不能在映射中使用 Person 因为它不是一个具体的实体。我如何实现这样的继承场景?

最佳答案

简单,你换@MappedSuperclass Person上的注释至 @Entity
使用 @MappedSuperclass仅当您明确不希望该类可查询或成为关系的一部分时。 @Entity其他地方。

一个很好的启发式决定是查看您的父类(super class)是否是 abstract - 如果是 - 使用 @MappedSuperclass ,就像您在 AbstractBaseModel 上所做的那样

关于Hibernate 继承 - 引用用 @MappedSuperclass 注释的实体,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15503544/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com