我想知道用@Inheritance注释层次结构的每个类是否有意义(或者即使它是正确的)。例如,假设我们有以下简单的层次结构:
public class A { ... }
public class B extends A { ... }
public class C extends A { ... }
为了持久保存这些类的对象,我们将按如下方式对A类进行注释:
@Entity
@Inheritance(strategy = InheritanceType.JOINED)
public class A { ... }
我的问题是,我们是否还需要将@Inheritance注释添加到B类和C类?正如Javadoc所说“它是在实体类中指定的,它是实体类层次结构的根。”所以我的潜在答案是,不!但是,如果我们对它们进行注释,它是否具有任何意义,还是完全被忽略了?
由于
答案 0 :(得分:0)
如果您不需要使用默认的InheritanceType,则需要将@Inheritance注释添加到子类。
如您所知,支持3种InheritanceTypes。每个类层次结构的表,每个子类的表和每个具体类的表。 默认情况下使用InheritanceType.SINGLE_TABLE,并且所有父类和子类对象都将放在一个表中。
如果要使用InheritanceType.JOINED或InheritanceType.TABLE_PER_CLASS,则需要添加@Inheritance注释。