Hibernate: отображение связи «многие к одному» с другой родительской таблицей в зависимости от типа? - PullRequest
0 голосов
/ 30 августа 2011

У меня есть таблицы, которые выглядят следующим образом:

Таблица позиций:

ItemName   Varchar2(200)
ItemId     Number
OwnerId    Number
OwnerType  number

Таблица персон:

PersonName Varchar2(200)
PersonId   Number

Таблица компании:

CompanyName Varchar2(200)
CompanyId   Number

Если для параметра ownerType для элемента установлено значение «1», поле ownerId элемента является внешним ключом PersonId таблицы «person».Когда OwnerType равен '2', ownerId является внешним ключом таблицы CompanyId таблицы Company.

Я не занимался моделированием данных, и у меня нет возможности изменить схему.

Я хотел бы решить две проблемы: (1) Я хотел бы получить файл сопоставления для таблицы Предметов, который бы дал мне владельца предметов.(2) Я хотел бы, чтобы файлы сопоставления для таблиц Person & Company дали мне элементы, принадлежащие Person или Company, соответственно.

Примечание: CompanyId и PersonId могут быть одинаковыми, поэтомуэлемент принадлежит только Person, когда person.personid = item.ownerid и item.ownertype = 1.

Я могу управлять файлами сопоставления и диаграммой объектов, чтобы я мог создать интерфейс владельца или суперучебный класс.

Может ли Hibernate делать подобные вещи?

1 Ответ

0 голосов
/ 30 августа 2011
  • Case 1: вы можете использовать концепцию Table per class hierarchy.
  • Case 2: сопоставить элементы, заданные для класса персона / компания, с условием где на отображении набора.
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...