У меня есть таблицы, которые выглядят следующим образом:
Таблица позиций:
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 делать подобные вещи?