我指的是每个具体类的表格,如下所述:Table per concrete class
按照9.1.6中的示例,假设我有CashPayment,CreditCardPayment,两者的超类都是抽象付款类。
如果我使用“每个具体类的表”类型的映射,我将有两个表:CASH_PAYMENT和CREDIT_PAYMENT,并且没有PAYMENT表。这一切都很好。
但是,如何构建另一个名为Xyz的实体类型,其中包含付款的参考/属性(现金或CC)......?从Java的角度来看,没关系:Xyz.pamentType,但是如何在HBM /注释中配置它,以及XYZ表的外观是什么?
它可能有一个PAYMENT_ID列,但显然它不能是外键,因为有两个可能引用的表。我猜XYZ需要某种类型的附加栏来说明它是哪种类型的付款。
或者Hibernate会在每次读取Xyz实例时使用ID连接两个表来查找正确的类型吗?
顺便说一句,我知道这是一个糟糕的方法,我可以使用更简单的替代方案,但我已经简化了问题,因为答案(而不是替代方案)对我有用。谢谢!
答案 0 :(得分:0)
无需配置任何内容,只需创建与付款的关系,例如:
@OneToOne private Payment payment;
然后为其赋值并持久化。
没有其他列用于查找付款类型。确定付款休眠的类型