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



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

Table: Parent
       id
       type
Table: Child1
       parentId : foreign
       list of fields
Table: Child2
       parentId : foreign
       list of fields

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

我的问题是如何在Hibernate中建模?我知道使用@SecondaryTable合并两个表,但我如何做到这一点依赖于父表中的值?

您正在寻找的是使用类的鉴别符列。参见Hibernate文档中的继承映射

示例为

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

最新更新