Есть мапинговый xml-файл:
<?xml version="1.0" ?>
<!DOCTYPE hibernate-mapping PUBLIC
"-//Hibernate/Hibernate Mapping DTD 3.0//EN"
"http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">
<hibernate-mapping>
<class name="com.example.MyObject" table="OWNER"
where="service = 462">
<id name="id" column="id" unsaved-value="null"/>
<property name="name" column="name" insert="false" update="false"/>
<property name="description" column="description" insert="false" update="false"/>
</class>
</hibernate-mapping>
Класс MyObject также должен содержать набор объектов класса HerObject:
<set name="herObjects" lazy="false">
<key />
<one-to-many class="com.example.HerObject"/>
</set>
но получить herObjects нужно при помощи сложного sql-запроса. Для этого указываю конструкцию (в примере sql упрощён):
<sql-query name="herObjSQLQuery">
<load-collection alias="ho" role="com.example.MyObject.herObjects"/>
<![CDATA[
select {ho.*} from her_obj ho where owner_id = :id
]]>
</sql-query>
, где вместо :id по задумке должен быть подставлен id текущего елемента MyObject. В блок set также добавил строку:
<loader query-ref="com.example.MyObject.herObjSQLQuery" />
В результате получился следующий xml:
<?xml version="1.0" ?>
<!DOCTYPE hibernate-mapping PUBLIC
"-//Hibernate/Hibernate Mapping DTD 3.0//EN"
"http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">
<hibernate-mapping>
<class name="com.example.MyObject" table="AAA"
where="service = 462 and status = 1 and conference_number > 0">
<id name="id" column="id" unsaved-value="null"/>
<property name="name" column="name" insert="false" update="false"/>
<property name="description" column="description" insert="false" update="false"/>
<set name="herObjects" lazy="false">
<key />
<one-to-many class="com.example.HerObject"/>
<loader query-ref="com.example.MyObject.herObjSQLQuery" />
</set>
<sql-query name="herObjSQLQuery">
<load-collection alias="ho" role="com.example.MyObject.herObjects"/>
<![CDATA[
select {ho.*} from her_obj ho where owner_id = :id
]]>
</sql-query>
</class>
</hibernate-mapping>
В чём ошибка? Как в sql-запрос подставить текущее значение id объекта MyObject?