我正在尝试映射一组在它们之间具有复杂关系的表。我有以下表格的字段:
Table: Parent
id
type
Table: Child1
parentId : foreign
list of fields
Table: Child2
parentId : foreign
list of fields
在数据库中,基本思想是父表类型字段确定相关记录是否出现在Child1或Child2中。通过这种方式,我根据其类型存储有关记录的信息,例如他们都是客户,但有些是个人,有些是企业,所以我可以根据这个存储单独的信息。
我的问题是如何在Hibernate中对此进行建模?我知道使用@SecondaryTable来合并两个表,但是如何依赖父表中的值来做这个呢?
答案 0 :(得分:1)
您正在寻找的是为班级使用鉴别器列。见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>