java – JPA中的Id继承

我有以下方案

@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并使用每个具体类策略的表来获取它们的ID,但问题是类B与类C有一对多关系所以我想要的是将类C的id更改为复合key由继承的id field1和对象b的id组成.这将允许b的两个不同对象具有具有相同field1值的c的两个不同对象.
我正在想的可能(覆盖继承)我使用eclipse链接作为持久性提供程序.

最佳答案 遗憾的是,JPA继承策略不支持在实体层次结构中具有不同的Id类型,因为它引入了歧义.

有关详情,请参见this question.

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

>’从层次结构中’分离’C,使其不从A派生
>使用C作为不同实体中的属性

点赞