java - 在子类中创建复合主键 (JPA)

标签 java jpa

假设我的父类和子类之间有以下情况:

Class Parent {
    @Id
    @Column(name="product")
    Long product;

    //more fields.
}

Class Child extends Parent {
    @Column(name="type")
    String productType;

    @Column(name="version")
    int version;

    //more fields.
}

即使子类扩展了已经具有主键的父类,是否可以在子类中拥有复合主键?

最佳答案

简短的回答是否定的。在 JPA 中,您无法重新定义主键。如果您的父类具有@ID注释,则无论继承策略如何,子类都不会允许@ID注释。

更长的答案是,如果您需要做这样的事情,您应该重新考虑您的对象映射和继承策略。如果您的 parent 已经拥有一组唯一可识别的字段,那么为什么您希望拥有一个打破此约定的 child 呢?即使您成功了,就架构和代码清晰度而言,这对您来说是安全的事情吗?

关于java - 在子类中创建复合主键 (JPA),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44640921/

相关文章:

java - 空对象模式

java - JPA 外键约束违规无法插入 Null

java - 如何将 Integer 包装器类传递给 java 中的方法?

java - JPA:实现模型层次结构 - @MappedSuperclass 与 @Inheritance

java - JPA 将属性存储为行

java - 重用生成器名称时会产生什么副作用?

java - @JoinTable 使用导入键代替主键

java - 如何从java中的字符串中删除\r和\n?

java - 在单独的类中使用 Java native 方法时出现 UnsatisfiedLinkError

java - Hangman - 隐藏字符串,如果猜对了则取消隐藏每个字符