Hibernate: отображение нескольких классов в одну таблицу - PullRequest
1 голос
/ 31 марта 2012

Рассмотрим транспортную таблицу с 3 полями: Крылья двигателя Колеса

Если Engine и Wheels не равны нулю, а Wings равен нулю, я хочу сопоставить это с классом Vehicle. Если Engine и Wings не равны NULL, а Wheels равен NULL, я хочу сопоставить это с классом Plane

Я читал о дискриминаторах, чтобы различать подклассы, но в любом из примеров, которые я читал, они всегда ссылаются на значение дискриминатора. Поэтому мне интересно, как я могу пойти по моему выше сценарию? Я просто реализую отдельные сопоставления? Я надеялся найти более аккуратный способ.

Спасибо

Редактировать

Только что снова просмотрел справочное руководство и заметил, что нулевые и ненулевые являются допустимыми значениями. Похоже, это решает мою проблему. Оставим это открытым на некоторое время, чтобы подтвердить. Спасибо!

1 Ответ

1 голос
/ 31 марта 2012

Вы можете создать абстрактный родительский класс для ваших классов самолетов и транспортных средств и использовать @DiscriminatorFormula, который вы используете для написания формулы, которая генерирует значение, которое вы позже можете аннотировать как @DiscriminatorValue для подклассов самолетов и транспортных средств.

Посмотрите на этот пример в документах Hibernate (хотя в этом примере для сопоставления используется XML, для аннотации это в основном то же самое):

http://docs.jboss.org/hibernate/core/3.6/reference/en-US/html/example-mappings.html#example-mappings-content-discrimination

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...