我正在使用JPA 2.0和EclipseLink 2.2.0。多个@MappedSuperclass
我有一个@MappedSuperclass,AbstractEntity,这是我所有的实体提供PK和审计列的基础。
我希望有另一个@MappedSuperclass继承了该类,并成为根的TABLE_PER_CLASS继承策略。
目前,在使用Maven构建时,我会收到标题错误。
在继承层次结构中是否允许多个@MappedSuperclass?
我正在使用JPA 2.0和EclipseLink 2.2.0。多个@MappedSuperclass
我有一个@MappedSuperclass,AbstractEntity,这是我所有的实体提供PK和审计列的基础。
我希望有另一个@MappedSuperclass继承了该类,并成为根的TABLE_PER_CLASS继承策略。
目前,在使用Maven构建时,我会收到标题错误。
在继承层次结构中是否允许多个@MappedSuperclass?
在继承层次允许多个@MappedSuperclass?
是,我已经这样做了。为了能够回答你关于Maven的错误问题,你必须提供一个堆栈跟踪和代码..
多个映射超被允许在同一个继承层次。它不是直接说所以在规格,但JPA 2.0规范没有明确禁止多个映射超类,而在其它上下文中,指的是区分具有多个映射在同一层次超类:
实体的默认接入类型层级由映射注释在实体 类别和的映射超级的实体层级的映射超级上的 确定,其不明确指定访问类型。
这意味着你可以做如下:
@MappedSuperclass
public class FirstMapped {
String firstVal;
}
@MappedSuperclass
public class SecondMapped extends FirstMapped {
String secondVal;
}
@Entity
public class ExtendingEntity extends SecondMapped {
@Id int id;
}
映射超不能继承实体的根。实体继承的根必须是实体,如documentation中所述。使用EclipseLink将@Inheritance添加到上面示例中映射的超类之一中时,会被忽略。将@Inheritance添加到ExtendingEntity按预期工作 - 它成为实体继承层次结构的根。
一般映射超只允许映射的重用,他们不是实体继承的一部分。
如果不回答你的问题,这将有助于如果你能分享这些“标题错误”。
对于我在JPA 2.1和休眠5.2.12.Final(使用与弹簧引导2.0.0.M7)不起作用。 – 2018-01-30 14:28:05