Я пытаюсь перевести старый код с ручной работы на Hibernate. Проблема здесь заключается в особом отображении, в котором тип / таблица целевого объекта определяется значением столбца.
Пример таблицы базы данных:
Таблица «Отношение»:
- id - мой первичный ключ
- parentType - символ, указывающий тип родителя (например, «I» означает объект в таблице «Предмет», «C» в таблице «Категория»)
- parentId - первичный ключ в таблице parentType
- childType - символ, который указывает тип потомка
- childId - первичный ключ в таблице дочернего элемента
Дело в том, что все эти типы (такие как Item или Category) имеют одного и того же абстрактного родителя GenericObject, который не имеет своей собственной таблицы. Наследование - TABLE_PER_CLASS.
Плохо то, что по parentId или childId вы не можете указать тип, идентификатор не является уникальным среди этих таблиц. Вам нужно взглянуть на parentType и childType.
Теперь, как мне отобразить это безумие в Hibernate? Я хотел бы, чтобы родитель и потомок были сопоставлены с переменной GenericObject, которая на самом деле будет экземпляром Item или Category.
Есть идеи?