将JPA的2.0 @Inheritance注释用于子类是否有意义?

时间:2011-08-24 09:12:14

标签: java persistence jpa-2.0

我想知道用@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所说“它是在实体类中指定的,它是实体类层次结构的根。”所以我的潜在答案是,不!但是,如果我们对它们进行注释,它是否具有任何意义,还是完全被忽略了?

由于

1 个答案:

答案 0 :(得分:0)

如果您不需要使用默认的InheritanceType,则需要将@Inheritance注释添加到子类。

如您所知,支持3种InheritanceTypes。每个类层次结构的表,每个子类的表和每个具体类的表。 默认情况下使用InheritanceType.SINGLE_TABLE,并且所有父类和子类对象都将放在一个表中。

如果要使用InheritanceType.JOINED或InheritanceType.TABLE_PER_CLASS,则需要添加@Inheritance注释。