Hibernate CriteriaクエリでWHERE~IS NULL/IS NOT NULL

2008/10/15 18:40Update
TAGS: Hibernate | Criteriaクエリ | IS NULL

ネイティブSQLの 「 IS NULL 」や「 IS NOT NULL 」句があります。本文はHibernate Criteriaクエリでそれらの機能の実装について学びます。

Hibernate Criteriaクエリの基本について次の記事をご参照ください。
――――――――――――――――――――――――――――――――――――
Hibernate  Criteriaクエリ基本
Hibernate Criteriaクエリ - Criteria.addメソッドで抽出条件の設定
――――――――――――――――――――――――――――――――――――

API仕様


Hibernate Criteriaクエリで「IS NULL」、「IS NOT NULL」機能を実装したAPI仕様は次の通りです。
org.hibernate.criterion.Restrictions#
◇ static Criterion     isNull(String propertyName)
◇ static Criterion     isNotNull(String propertyName)

サンプル


サンプルから見てみます。
Son.hbm.xml
<hibernate-mapping>
    <class name="eg.Son" table="SON">
        <id name="id" unsaved-value="0">
             <generator class="increment"/>
        </id>
        <property name="name" column="NAME" type="string" length="100"/>
        
        <many-to-one
            column="FATHER_ID"
            name="father"
            class="eg.Father"
            not-null="true"
            cascade="none" outer-join="true" />
    </class>
</hibernate-mapping>


■例1:(自コラムがNULLの場合)
    public static void testCriteria(Session sess) {
        Criteria criteria = sess.createCriteria(Son.class);
        criteria.add(Restrictions.isNull("name"));    // NAME IS NULL
        
        List list = criteria.list();
        
        System.out.println(list.size());
    }


■例2:(関連がNULLの場合)
    public static void testCriteria(Session sess) {
        Criteria criteria = sess.createCriteria(Son.class);
        criteria.add(Restrictions.isNull("father"));        //son.FATHER_ID IS NULL
        
        List list = criteria.list();
        
        System.out.println(list.size());
    }

有关作者
Syboos.jp編集長AJavaやオープンソース情報の執筆、Webサイトの開発や運営全般の業務に携わる。

Sponsored Link


Comments

用户名 (required)

Email (will not be published) (required)

URL

Evaluation