Отображение гибернации с таблицей внешних ключей - PullRequest
1 голос
/ 20 января 2011

Я пытаюсь создать файл 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
...