我有以下数据库设计:

hibernate - JPA:是否可以更改继承层次结构中的 PK?-LMLPHP
(来源: kawoolutions.com )

如您所见,States、Countrys 和 Continents 都是 GeoAreas 的子表。这里有趣的事实是,States 和Countries 更改了它们的主键,而不是(据说)从GeoAreas 继承的键。

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

问题是:
JPA 支持这样的设计吗?仅 JPA 2.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 节



即您不能在子类中“重新定义”身份(通过向身份添加额外的字段)。

关于hibernate - JPA:是否可以更改继承层次结构中的 PK?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/5744822/

10-15 10:43