java - Hibernate 嵌套嵌入式主键还是平面字段?

标签 java hibernate nested primary-key composite-key

我有两个具有嵌套复合主键的类(B 的复合 PK 包括 A 的复合 PK)

class A {
    @EmbeddedId
    APk aId;
}

@Embeddable
class APk {
    @Column
    Long x;
    @Column
    Long y;
}

class B {
    @EmbeddedId
    BPk bId;
}

知道不建议在 hibernate 中使用复合主键:为 B 实现主键类型的推荐方法是什么?

替代方案 1 - 嵌入 A 的 PK?

替代方案 2 - 或者在更扁平的实现中声明所有 3 个属性?

@Embeddable
class BPk {
    // Alternative 1
    @Embedded
    APk aId;
    @Column
    Long z;
}


@Embeddable
class BPk {
   // Alternative 2
    @Column
    Long x;
    @Column
    Long y;
    @Column
    Long z;
}

最佳答案

这两种选择之间没有太大区别。如果需要,您将能够在这两种情况下覆盖属性的映射。如果 APk 被重复使用多次,则替代方案 1 会更好。否则,请使用替代方案 2 以保持简单。

关于java - Hibernate 嵌套嵌入式主键还是平面字段?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25403617/

相关文章:

java - 在不指定消息类型或事件类型或版本的情况下读取 HL7 消息

java - Netty 服务器不关闭/释放套接字

go - 如何使用反射来设置嵌套的结构域值

nested - vxml 中是否允许嵌套 'if' 语句?

Java Swing ViewPort 滚动滞后

java - 如何在将列表项添加到 ListView 之前以编程方式设置列表项中的字体大小?

java - JPA/Hibernate 实例不工作

java - hibernate 无故插入

java - Hibernate 额外懒惰不工作

ecmascript-6 - 解构时可空嵌套对象上的 ES6 默认参数