Hibernate:每个具体类的表映射和引用
我指的是每种混凝土等级的表,如下所述: 按照9.1.6中的示例,假设我有CashPayment和CreditCardPayment,两者的超类都是抽象的Payment类 如果我使用每个具体类类型映射的表,我将有两个表:CASH\u PAYMENT和CREDIT\u PAYMENT,以及no PAYMENT表。那很好 但是,如何构建另一个名为Xyz的实体类型,该实体类型包含对现金或抄送付款的引用/属性。。。?从Java的角度来看,这没关系:Xyz.pamentType,但是我如何在HBM/annotations中配置它,以及Xyz表是什么样子 它可能有一个PAYMENT_ID列,但显然它不能是外键,因为有两个潜在的表可供参考。我猜XYZ需要某种类型的附加列来说明它是哪种类型的付款 或者Hibernate会在每次读取Xyz实例时使用ID连接这两个表以找到正确的类型吗Hibernate:每个具体类的表映射和引用,hibernate,class,reference,concrete,Hibernate,Class,Reference,Concrete,我指的是每种混凝土等级的表,如下所述: 按照9.1.6中的示例,假设我有CashPayment和CreditCardPayment,两者的超类都是抽象的Payment类 如果我使用每个具体类类型映射的表,我将有两个表:CASH\u PAYMENT和CREDIT\u PAYMENT,以及no PAYMENT表。那很好 但是,如何构建另一个名为Xyz的实体类型,该实体类型包含对现金或抄送付款的引用/属性。。。?从Java的角度来看,这没关系:Xyz.pamentType,但是我如何在HBM/anno
顺便说一句,我知道这是一个糟糕的方法,我可以使用更简单的替代方法,但我已经简化了这个问题,因为答案比替代方法对我更有用。谢谢 没有什么可配置的,只是创建与支付的关系,例如:
@OneToOne private Payment payment;
然后给它赋值并保存它们
不使用其他列来查找付款类型。要确定付款类型,请休眠
使联合
现金支付查询结果
CreditCardPayment表的查询结果。
这些select语句在select列表中包含表示类型的附加项。
外部选择从union的嵌套查询结果中获取值。附加属性确定在创建付款实例时将使用哪个具体类。
谢谢,你回答得很清楚。这与我问Hibernate是否会加入这两个表时的意思类似,尽管我的意思是联合。如果它们是三个大表,那么联合就不理想了……是否有必要向Hibernate提供更多信息以避免联合?XYZ的表结构如何。会有外键吗?如果是,将指向哪个表?