【发布时间】:2011-07-17 08:11:13
【问题描述】:
我有以下 3 个实体:
- 实体类 A 实现接口 X
- 实体类 B 实现接口 X
- 实体类 C
我希望实体类 C 能够保存对 X 类型实体的引用,即:A 或 B。
是否可以在 C 中没有两个引用字段的情况下执行此操作,例如:
@ManyToOne 私有 C 父级;
或者我是否需要为每个 C 实现提供一个参考并自己完成作业?
【问题讨论】:
我有以下 3 个实体:
我希望实体类 C 能够保存对 X 类型实体的引用,即:A 或 B。
是否可以在 C 中没有两个引用字段的情况下执行此操作,例如:
@ManyToOne 私有 C 父级;
或者我是否需要为每个 C 实现提供一个参考并自己完成作业?
【问题讨论】:
不。 JPA 没有为接口类型的字段/属性定义持久性。 JDO 是唯一允许这样做的持久性规范。
您唯一能做的就是拥有一个通用的基类,但对于您的模型来说这可能是不可能的。
【讨论】:
在 JPA 规范中未定义,但如果使用 EclipseLink,您可以为此使用 @VariableOneToOne 映射。
看, http://en.wikibooks.org/wiki/Java_Persistence/Advanced_Topics#Interfaces
【讨论】: