Hibernate CriteriaクエリでWHERE~IS NULL/IS NOT NULL
2008/10/15 18:40Update
ネイティブSQLの 「 IS NULL 」や「 IS NOT NULL 」句があります。本文はHibernate Criteriaクエリでそれらの機能の実装について学びます。
Hibernate Criteriaクエリの基本について次の記事をご参照ください。
――――――――――――――――――――――――――――――――――――
◇Hibernate Criteriaクエリ基本
◇Hibernate Criteriaクエリ - Criteria.addメソッドで抽出条件の設定
――――――――――――――――――――――――――――――――――――
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
■例1:(自コラムがNULLの場合)
■例2:(関連がNULLの場合)
――――――――――――――――――――――――――――――――――――
◇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());
}
Sponsored Link
Comments
- Relative Articles
- Hibernate設定ファイルその1 - hibernate.cfg.xml - (2008/07/09 14:08)
- Hibernate c3p0 - よく利用されているコネクションプーリング - (2008/07/09 15:00)
- Hibernate 方言(Dialect)一覧 - (2008/07/09 15:10)
- Hibernate のSessionとSessionFactory - (2008/07/09 15:51)
- ThreadLocal でHibernate Session を効率的に管理する - (2008/07/09 18:43)
- Hibernateで複数のDBに接続するには? - (2008/07/09 18:47)
- Hibernateとは - (2008/07/11 14:23)
- Hibernate のインストール - (2008/07/24 11:01)
- Hibernate の開発手順 - (2008/07/24 12:44)
- Hibernate SQLをログに出力方法 - (2008/07/30 16:06)