HQL(六)クエリーフィルタ
クエリーフィルタ
クエリーフィルタが設定されていて、プログラムでフィルタが開かれています。同じセッションでは、すべてのクエリ文の後に所定のクエリ条件が追加されます。
*マップファイルでフィルタのパラメータを定義する
*クラスのマッピングファイルにフィルタパラメータを使う
マッピングファイルstudent.hbm.xml
<ヒベルナ-mapping>
<class name=「comp.wlh.hibernate.Student」table=「ttudent」
<id name=“id”>
<generator class=「native」/>
<property name=「name」/>
<property name=「createTime」/>
<many-to-one name=「classis」column=「classide」/>
<!--フィルタを設定する条件は、idが10---です。
<query name=「studentQuery」>
プロジェクト s from Student s
]]>
<!>フィルタを宣言して、モザイクmyidを設定します。タイプはinitegerです。<filter-def name=“filtertest”><filter-param name=“myid”type=“integer”/
*プログラムでフィルタを有効にする
参照:FilterQuery Test.java
クエリーフィルタが設定されていて、プログラムでフィルタが開かれています。同じセッションでは、すべてのクエリ文の後に所定のクエリ条件が追加されます。
*マップファイルでフィルタのパラメータを定義する
*クラスのマッピングファイルにフィルタパラメータを使う
マッピングファイルstudent.hbm.xml
<ヒベルナ-mapping>
<class name=「comp.wlh.hibernate.Student」table=「ttudent」
<id name=“id”>
<generator class=「native」/>
<property name=「name」/>
<property name=「createTime」/>
<many-to-one name=「classis」column=「classide」/>
<!--フィルタを設定する条件は、idが10---
<query name=「studentQuery」>
プロジェクト s from Student s
]]>
<!>フィルタを宣言して、モザイクmyidを設定します。タイプはinitegerです。<filter-def name=“filtertest”><filter-param name=“myid”type=“integer”/
*プログラムでフィルタを有効にする
参照:FilterQuery Test.java
package com.wlh.hibernate;
import java.util.Iterator;
import java.util.List;
import junit.framework.TestCase;
import org.hibernate.Session;
public class FilterQueryTest extends TestCase{
public void testQuery1() {
Session session = null;
try {
session = HibernateUtils.getSession();
session.beginTransaction();
// myid 10
session.enableFilter("filtertest")
.setParameter("myid", 10);
List students=session.getNamedQuery("studentQuery")
.list();
for(Iterator iter=students.iterator();iter.hasNext();){
Student o=(Student)iter.next();
System.out.println("name="+o.getName());
}
session.getTransaction().commit();
}catch(Exception e) {
e.printStackTrace();
session.getTransaction().rollback();
}finally {
HibernateUtils.closeSession(session);
}
}
}