【发布时间】:2017-06-19 22:29:07
【问题描述】:
假设我在父类和子类之间有以下情况:
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.
}
即使子类扩展了已经有主键的父类,是否可以在子类中拥有复合主键?
【问题讨论】:
-
可能取决于继承策略,基本上对于你的用例你至少需要
table per class策略,因为一张表不能有两个主键,我不知道你还需要什么,除此之外,您是否尝试过@Inheritance(strategy=InheritanceType.TABLE_PER_CLASS),然后在儿童中设置不同的@Id(注意:每个班级的表格可能不是最好的效率) -
如果您描述您的真正目标,例如
Parent和Child,以及为什么您需要让孩子拥有不同的主键,也许我们可以指导您找到更好的解决方案 -
@niceman 感谢您的及时回复。我还没有尝试过
@Inheritance(strategy=InheritanceType.TABLE_PER_CLASS)的策略。我会调查的。谢谢。