我正在尝试映射一组之间具有复杂关系的表。我有以下带有字段的表:
Table: Parent
id
type
Table: Child1
parentId : foreign
list of fields
Table: Child2
parentId : foreign
list of fields
在数据库中,基本思想是父表类型字段确定相关记录是否出现在 Child1 或 Child2 中。通过这种方式,我根据记录的类型存储有关记录的信息,例如他们都是客户,但有些是个人,有些是企业,因此我可以根据此存储单独的信息。
我的问题是如何在 Hibernate 中对此进行建模?我知道使用 @SecondaryTable 来合并两个表,但是如何根据父表中的值来执行此操作?
最佳答案
您正在寻找的是为该类使用鉴别器列。请参阅Hibernate docs re inheritance mapping
示例是
<class name="Payment" table="PAYMENT">
<id name="id" type="long" column="PAYMENT_ID">
<generator class="native"/>
</id>
<discriminator column="PAYMENT_TYPE" type="string"/>
<property name="amount" column="AMOUNT"/>
...
<subclass name="CreditCardPayment" discriminator-value="CREDIT">
<join table="CREDIT_PAYMENT">
<property name="creditCardType" column="CCTYPE"/>
...
</join>
</subclass>
<subclass name="CashPayment" discriminator-value="CASH">
...
</subclass>
<subclass name="ChequePayment" discriminator-value="CHEQUE">
...
</subclass>
</class>
关于java - 将表映射到 Hibernate 中的两个继承表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6898787/