Я пытаюсь создать файл hbm.xml для сопоставления некоторых постоянных объектов в java с hibernate.
Мой домен выглядит так:
A Свойство имеет Папку с корнем Папки . Свойство имеет ключ для поиска папки и Папка имеет ключ для поиска корня Папки .
public class Property {
private Folder folder;
private Set<Folder> rootFolders;
}
public class Folder {
private String id;
private String rootfolder;
private String descriptor;
}
Теперь есть Folder.hbm.xml (и Folder.java ), но я не могу изменить его и не могу добавить туда ссылку (неприкасаемое наследие ). Поэтому я не могу добавить туда список корней.
Я хочу добавить его непосредственно в Property , чтобы Property имел два поля: folder и rootFolders .
Я пытался с join и set (см. Далее), но я не могу заставить Hibernate создать правильный запрос ...
Поэтому мой вопрос: возможно ли это с отображением (я не хочу использовать HQL) и как это будет выглядеть?
РЕДАКТИРОВАТЬ : Я выяснил, что в папке есть список папок (и соответственно изменил описание).
Код, который у меня есть на данный момент:
<set name="rootFolders" table="FOLDER">
<key column="ID" property-ref="folder.id"/>
<many-to-many
column="ROOTFOLDER"
class="org.company.Folder"
property-ref="descriptor"
/>
</set>
Я уже сопоставил Папка со свойством (и назвал его папка ). Папка имеет столбец ROOTFOLDER , который отображается на DESCRIPTOR Папка (которая не является первичным ключом!)
Кроме того, я попытался выполнить необходимый поиск с помощью SQL (просто чтобы убедиться, что это возможно):
from
(select t.logical_id, t.id, t.tariffroot from (PROPERTY p inner join FOLDER f on p.FOLDER_ID = f.ID)) propertyFolders
inner join FOLDER roots on propertyFolders.FOLDERROOT= roots.DESCRIPTOR