JPA中的Id继承

时间:2013-12-04 15:12:07

标签: java inheritance jpa

我有以下方案

@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 field1和对象b的id组成。这将允许b的两个不同对象具有具有相同field1值的c的两个不同对象。 我正在考虑的是什么(覆盖继承)我使用eclipse链接作为持久性提供程序。

1 个答案:

答案 0 :(得分:2)

不幸的是,JPA继承策略不支持在实体层次结构中使用不同的Id类型,因为它引入了歧义。

有关详细信息,请参阅this question

要解决这个限制,你可以:

  • '从层次结构中分离'C,使其不是来自A
  • 使用C作为不同实体的属性