Hibernate嵌套嵌入式主键还是扁平字段?

时间:2014-08-20 11:32:58

标签: 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;
}

1 个答案:

答案 0 :(得分:0)

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