При помощи элемента join можно сделать маппинг свойств одного класса на столбцы нескольких таблиц, отношение между которыми один-к-одному (one-to-one).
Например:
<class name="Person" table="PERSON"> <id name="id" column="PERSON_ID">...</id> <join table="ADDRESS"> <key column="ADDRESS_ID"/> <property name="address"/> <property name="zip"/> <property name="country"/> </join> </class>
У элемента join могут быть следующие свойства:
- table – название таблицы
- schema – переопределяет имя схемы, указываемое в корневом элементе Hibernate-mapping
- catalog – переопределяет имя каталога, указываемое в корневом элементе Hibernate-mapping
- fetch – задает способ извлечения данных. По умолчанию join, т.е. для извлечения данных будет использоваться inner join, если элемент join определен в текущем классе или в родительском классе. Если элемент join определен в потомке (в элементе subclass), то для извлечения данных будет применяться outer join. Если в свойстве fetch указано значение select, то ,если строка результата является подклассом данного класса, будет для извлечения данных подкласса использоваться дополнительный запрос. Для элементов join определенных в классе или его родителе все-равно будет использоваться inner join.
- inverse – если inverse = true, то при обновлении/вставке соответствующих свойств класса, будут обновдяться/добавляться записи в соответствующих таблицах
- optional – если optional = true, то запись в связанную таблицу будет добавлена только если хотя бы одно из свойств в классе не null