Я пытаюсь создать слой Hibernate для схемы базы данных, которую я практически не контролирую. Упрощенно, есть две таблицы.
Таблица parent
имеет два важных столбца:
parent_id
, целое число, первичный ключ, автоинкремент
parent_code
, строка, уникальный ключ, сгенерированный где-то черным ящиком (допустим, это UUID для здравомыслия)
- Плюс куча столбцов данных
Таблица child
имеет два важных столбца:
child_parent_id
, целое число, первичный ключ, автоинкремент
child_parent_code
, строка, внешний ключ, указывающий на значение parent_code
родителя
- Плюс куча столбцов данных
Я хочу иметь возможность вызывать Parent.getChilds () и получать объекты Collection of Child. Но настройка файлов отображения Hibernate кажется невозможной. В приведенных ниже сопоставлениях выполняется поиск в таблице child
со значением parent_id
(вместо parent_code
).
В Parent.hbm.xml
:
<set name="childs" inverse="true" lazy="true" table="child" fetch="select">
<key>
<column name="child_parent_code" not-null="true" />
</key>
<one-to-many class="foo.bar.Child" />
</set>
В Child.hbm.xml
:
<many-to-one name="parent" class="foo.bar.Parent" fetch="select">
<column name="child_parent_code" not-null="true" />
</many-to-one>
Я потратил час на просмотр своей копии Java Persistence с Hibernate , но я не могу понять, как делать то, что я хочу. Возможно ли это?