Hibernateクエリ - setParameterListでSELECT~WHERE~IN(...)

2008/11/14 13:16Update
TAGS: Hibernate | クエリ | SQLクエリ | HQLクエリ | Criteriaクエリ | パラメータ | 条件 | IN

SQL文の「SELECT~WHERE~IN(...)」句である列の複数のOR条件を一括指定することができます。本文は、HibernateのSQLクエリやHQLクエリ、及びCriteriaクエリにおいて、それぞれの「WHERE~IN(...)」の実装方法について学びます。

関連API仕様


org.hibernate.criterion.Restrictions#
    static Criterion in(String propertyName, Collection values)
    static Criterion in(String propertyName, Object[] values)

org.hibernate.Query#
    Query setParameterList(String name, Collection vals)
    Query setParameterList(String name, Collection vals, Type type)
    Query setParameterList(String name, Object[] vals)
    Query setParameterList(String name, Object[] vals, Type type)
    Query setParameters(Object[] values, Type[] types)

Hibernate SQLクエリでSELECT~WHERE~IN(...)


――――――――――――――――――――――――――――――
Hibernate  ネイティブSQLクエリ基本
Hibernateの名前つきクエリ - パラメータの設定
――――――――――――――――――――――――――――――

例:
String []conditions = {"WhiteCat", "BlackCat"};
//List conditions = ...

String sql = "SELECT c.NAME, c.ID FROM CAT c WHERE c.NAME IN (:name)";
Query query = ...
query.setParameterList("name", conditions);


Hibernate HQLクエリでSELECT~WHERE~IN(...)


――――――――――――――――――――――――――――――
Hibernate HQL入門その1 - HQLの基本的な書き方及びその利用方法
――――――――――――――――――――――――――――――



例:
String []conditions = {"WhiteCat", "BlackCat"};
//List conditions = ...

String sql = "SELECT c.name, c.id FROM Cat c WHERE c.name IN (:name)";
Query query = ...
query.setParameterList("name", conditions);


また、通常のSQLと同じように、こんな使い方もできます。
String sql = "SELECT c.name, c.id FROM Cat c WHERE c.name IN (SELECT o.name FROM SomeTalbe WHERE o.name = :name)";


Hibernate CriteriaクエリでSELECT~WHERE~IN(...)


――――――――――――――――――――――――――――――
Hibernate  Criteriaクエリ基本
Hibernate Criteriaクエリ - Criteria.addメソッドで抽出条件の設定
――――――――――――――――――――――――――――――

例:
String []conditions = {"WhiteCat", "BlackCat"};
//List conditions = ...
Criteria criteria = session.createCriteria(Cat.class);
criteria.add(Restrictions.in("name", conditions));


以上。

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

Sponsored Link


Comments