25. Juni 2007

Hibernate - Filter für 1:n-Beziehungen definieren

Definition des Filters in einem Mapping-File:

<hibernate-mapping>
...
<filter-def name="theFilter">
<filter-param name="theParam" type="int"/>
</filter-def>
...
</hibernate-mapping>

In einer 1:n-Beziehung (hier am Beispiel einer indizierten Liste) wird der Filter angegeben. Die Condition landet in der WHERE-Klausel:

<list name="myListOfSomething" inverse="true" lazy="false" >
<key>
<column name="PF_ID" precision="11" scale="0" not-null="true" />
</key>
<index column="MYPK" />
<one-to-many class="Something" >
<filter name="theFilter" condition="MYPK=:theParam"/>
</list>


Beim Aufruf wird der Filter wie folgt definiert

Filter filter = session.enableFilter("theFilter");
filter.setParameter("theParam",new Integer(2));

Keine Kommentare: