Следующее из документации NHibernate:
15,4. Пользовательский SQL для загрузки Вы также можете объявить свои собственные запросы SQL (или HQL) для загрузки сущностей:
<sql-query name="person">
<return alias="pers" class="Person" lock-mode="upgrade"/>
SELECT NAME AS {pers.Name}, ID AS {pers.Id}
FROM PERSON
WHERE ID=?
FOR UPDATE
</sql-query>
Это просто именованное объявление запроса, как обсуждалось ранее. Вы можете ссылаться на этот именованный запрос в отображении класса:
<class name="Person">
<id name="Id">
<generator class="increment"/>
</id>
<property name="Name" not-null="true"/>
<loader query-ref="person"/>
</class>
Не приведен пример использования HQL. Я попытался просто заменить <sql-query>
на <query>
, а затем заменить запрос SQL на запрос HQL. Это приводит к исключению «Именованный SQL-запрос не известен». Есть ли способ заставить его искать HQL-запрос вместо SQL-запроса?