Отображение таблиц в две унаследованные таблицы в Hibernate - PullRequest
0 голосов
/ 01 августа 2011

Я пытаюсь отобразить набор таблиц, которые имеют сложные отношения между ними.У меня есть следующие таблицы с полями:

Table: Parent
       id
       type

Table: Child1
       parentId : foreign
       list of fields

Table: Child2
       parentId : foreign
       list of fields

В базе данных основная идея заключается в том, что поле Тип родительских таблиц определяет, будет ли связанная запись в Child1 или Child2.Таким образом, я храню информацию о записи в зависимости от ее типа, например, все они являются клиентами, но некоторые являются частными лицами, а некоторые - предприятиями, поэтому я могу хранить отдельную информацию в зависимости от этого.

Мой вопрос: как мне смоделировать это в Hibernate?Я знаю, как использовать @SecondaryTable для объединения двух таблиц, но как мне сделать это в зависимости от значения в родительской таблице?

1 Ответ

1 голос
/ 01 августа 2011

Что вы ищете, так это использование столбца дискриминатора для класса.См. Документация 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>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...