gpt4 book ai didi

jpa-2.0 - 多个@MappedSuperclass

转载 作者:行者123 更新时间:2023-12-03 20:06:06 25 4
gpt4 key购买 nike

我正在使用 JPA 2.0 和 EclipseLink 2.2.0。

我有一个 @MappedSuperclass,AbstractEntity,它是我所有提供 PK 和审计列的实体的基础。

我想让另一个 @MappedSuperclass 扩展该类并成为 TABLE_PER_CLASS 继承策略的根。

目前,在使用 Maven 构建时,我收到标题错误。

继承层次结构中是否允许多个@MappedSuperclass?

最佳答案

在同一继承层次结构中允许多个映射的父类(super class)。规范中没有直接这样说,但是 JPA 2.0 规范没有明确禁止多个映射父类(super class),在其他上下文中它指的是同一层次结构中具有多个映射父类(super class)的情况:

The default access type of an entity hierarchy is determined by the placement of mapping annotations on the attributes of the entity classes and mapped superclasses of the entity hierarchy that do not explicitly specify an access type.



这意味着您可以执行以下操作:
@MappedSuperclass
public class FirstMapped {
String firstVal;
}

@MappedSuperclass
public class SecondMapped extends FirstMapped {
String secondVal;
}

@Entity
public class ExtendingEntity extends SecondMapped {
@Id int id;
}

映射的父类(super class)不能是实体继承的根。实体继承的根必须是实体,如 documentation 中所述.使用 EclipseLink 将 @Inheritance 添加到上面示例中的映射父类(super class)之一会被静默忽略。将 @Inheritance 添加到 ExtendingEntity 可以按预期工作 - 它成为实体继承层次结构的根。

一般来说,映射父类(super class)仅用于允许重用映射,它们不是实体继承的一部分。

如果这不能回答您的问题,那么如果您可以分享这些“标题错误”将会有所帮助。

关于jpa-2.0 - 多个@MappedSuperclass,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6226392/

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