我有以下数据库设计:
(来源: 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/