休眠:每个具体类映射和引用的表



我指的是这里解释的每个具体类的表:按照9.1.6中的例子,假设我有CashPayment、CreditCardPayment,两者的超类都是一个抽象 Payment类。

如果我使用"每个具体类的表"类型的映射,我将有两个表:CASH_PAYMENT和CREDIT_PAYMENT,并且没有PAYMENT表。这很好。

然而,我如何构建另一个实体类型称为Xyz,其中包含对付款(现金或CC)的引用/属性…?从Java的角度来看,这没问题:Xyz。但是我如何在HBM/注释中配置它,以及XYZ表将是什么样子?

它可能有一个PAYMENT_ID列,但显然它不能是一个外键,因为有两个潜在的表要引用。我猜XYZ需要一些额外的列来说明它是哪种类型的付款。

或者Hibernate将使用ID连接两个表,以便每次读取Xyz实例时找到正确的类型?

顺便说一下,我知道这是一个糟糕的方法,我可以使用更简单的替代方法,但是我已经简化了问题,因为答案(而不是替代方法)对我有用。谢谢!

几乎没有什么要配置的,只是创建与Payment的关系,例如:

@OneToOne private Payment payment;

,然后赋值并持久化它们。

没有使用其他列来查找付款的类型。要确定支付Hibernate的类型

  • 进行并集
    • 查询CashPayment的结果
    • 对CreditCardPayment表的查询结果。
  • 这些选择语句包含选择列表中表示类型的附加项。
  • 外部选择从嵌套查询(联合结果)中获取值。附加属性决定在创建Payment实例时使用哪个具体类。

相关内容

  • 没有找到相关文章

最新更新