我有两个嵌套复合主键的类(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;
}
答案 0 :(得分:0)
这两种选择之间没有太大区别。如果需要,您将能够在两种情况下覆盖属性的映射。如果APk不止一次重复使用,替代方案1会更好。否则,请使用备选方案2保持简单。