Тип целевого объекта JPA на основе значения столбца - PullRequest
1 голос
/ 19 октября 2010

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

Пример таблицы базы данных:

Таблица «Отношение»:

  • id - мой первичный ключ
  • parentType - символ, указывающий тип родителя (например, «I» означает объект в таблице «Предмет», «C» в таблице «Категория»)
  • parentId - первичный ключ в таблице parentType
  • childType - символ, который указывает тип потомка
  • childId - первичный ключ в таблице дочернего элемента

Дело в том, что все эти типы (такие как Item или Category) имеют одного и того же абстрактного родителя GenericObject, который не имеет своей собственной таблицы. Наследование - TABLE_PER_CLASS.

Плохо то, что по parentId или childId вы не можете указать тип, идентификатор не является уникальным среди этих таблиц. Вам нужно взглянуть на parentType и childType.

Теперь, как мне отобразить это безумие в Hibernate? Я хотел бы, чтобы родитель и потомок были сопоставлены с переменной GenericObject, которая на самом деле будет экземпляром Item или Category.

Есть идеи?

1 Ответ

1 голос
/ 19 октября 2010

Hibernate имеет аннотации @Any и @ManyToAny для случаев, когда целевой объект идентифицируется по типу и неуникальному идентификатору.

Я думаю, что в вашем случае, так как родитель и потомок идентифицированы таким образом, вам нужно создать Relation сущность с отношениями к родителю и потомку с аннотацией @Any.

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