将表映射到Hibernate中的两个继承表

时间:2011-08-01 13:03:46

标签: java database hibernate database-design

我正在尝试映射一组在它们之间具有复杂关系的表。我有以下表格的字段:

Table: Parent
       id
       type

Table: Child1
       parentId : foreign
       list of fields

Table: Child2
       parentId : foreign
       list of fields

在数据库中,基本思想是父表类型字段确定相关记录是否出现在Child1或Child2中。通过这种方式,我根据其类型存储有关记录的信息,例如他们都是客户,但有些是个人,有些是企业,所以我可以根据这个存储单独的信息。

我的问题是如何在Hibernate中对此进行建模?我知道使用@SecondaryTable来合并两个表,但是如何依赖父表中的值来做这个呢?

1 个答案:

答案 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>