Hibernate JPA:可以在继承层次结构中更改PKs吗?

Hibernate JPA:可以在继承层次结构中更改PKs吗?,hibernate,inheritance,jpa,mapping,primary-key,Hibernate,Inheritance,Jpa,Mapping,Primary Key,我有以下DB设计: (来源:) 如您所见,州、国家和大陆都是地理区域的子表。这里有趣的事实是,州和国家改变了他们从地理区域继承的主键 目的:州和国家也用于邮政地址,我不想使用geoareats.id(未显示对州和国家的引用) 问题是: JPA是否支持这种设计?仅限JPA2.0?一点也不 我看到的问题是如何将@Id注释(用于所有映射)指定为GeoArea类 public abstract class GeoArea implements Serializable { @Id @C

我有以下DB设计:


(来源:)

如您所见,州、国家和大陆都是地理区域的子表。这里有趣的事实是,州和国家改变了他们从地理区域继承的主键

目的:州和国家也用于邮政地址,我不想使用geoareats.id(未显示对州和国家的引用)

问题是: JPA是否支持这种设计?仅限JPA2.0?一点也不

我看到的问题是如何将@Id注释(用于所有映射)指定为GeoArea类

public abstract class GeoArea implements Serializable
{
    @Id
    @Column(name = "id")
    protected Integer id;

    ...
}
子类还需要在某些属性上指定另一个可选的@Id,比如

public class Country extends GeoArea
{
    @Id
    @Column(name = "iso_code")
    private String isoCode;

    ...
}
有谁能告诉我JPA规范否认了这种情况吗?如果有,第2.4节

必须在实体类上定义主键,该实体类是 实体层次结构或映射的超类上的(直接或 间接)实体层次结构中所有实体类的超类。这个 主键必须在实体层次结构中定义一次


i、 e您不能在子类中“重新定义”标识(通过向标识添加额外字段)。

谢谢!这意味着任何子表都必须定义根表和它们之间所有超级表的标识关系?(只是让我自己放心……)