我有以下方案
@Entity
public class A
{
@Id
String field1
String field2
}
public class B extends A
{
String field3;
@OneToMany(MappedBy="b")
List<C> cList;
}
public class C extends A
{
String field4;
@ManyToOne
B b;
}
B 类和 C 类都扩展了 A 并使用每个具体类策略的表从 A 获取它们的 id 但问题是 B 类与 C 类具有一对多关系所以我想要的是将 C 类的 id 更改为是一个复合键,由继承的 id 字段 1 和对象 b 的 id 组成。这将允许 b 的两个不同对象具有具有相同 field1 值的 c 的两个不同对象。 是我认为可能的(覆盖继承)我正在使用 eclipse 链接作为持久性提供程序。
最佳答案
不幸的是,JPA 继承策略不支持实体层次结构中具有不同的 Id 类型,因为它会引入歧义。
参见 this question了解详情。
要解决此限制,您可以:
- 从层次结构中“分离”
C
,使其不派生自A
- 将
C
用作不同实体中的属性
关于java - JPA中的Id继承,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20378973/