Hibernate HQLクエリ - 戻り値をnew listでList型に

2008/09/12 21:23Update
TAGS: Hibernate | HQLクエリ | list

データベースに問い合わせを行う際、戻り値のコレクションに含める要素をList型にしたいときがあります。こんなとき、Hibernate HQLクエリの場合、new listを使います。

使い方


例1:
select new list(t1.c1, t2.c2) from TableEntity1 t1 ,TableEntity2 t2 where ...

例2:
select new list('Hello', 100, c.id, c.name) from Cat c where ...

※new listに指定できる項目は数に限りがありません。
※項目に、エンティティのプロパティ名や文字列、数字などを指定することが可能です。

サンプル


Hibernate HQLのnew listについて使ってみます。

◇FATHERテーブル
ID    NAME    
1    f01
2    f02    

※FATHERに対応するエンティティやマッピングの定義をここで省きます。

◇テストコード(抜粋)
    public static void testHqlNewList(Session sess) {
        String hql = "select new list('Hello', 100, f.id, f.name) from Father f where f.name like 'f%'";
        
        Query query = sess.createQuery(hql);
        List <List> listList = query.list();
        
        for (List list: listList) {
            System.out.println("==========");
            
            for (int i=0; i<list.size(); i++) {
                System.out.println(String.valueOf(i) + " : " + list.get(i));
            }
        }
    }

    
◇実行ログ
Hibernate: select 'Hello' as col_0_0_, 100 as col_1_0_, father0_.ID as col_2_0_, father0_.NAME as col_3_0_ from FATHER father0_ where father0_.NAME like 'f%'
==========
0 : Hello
1 : 100
2 : 1
3 : f01
==========
0 : Hello
1 : 100
2 : 2
3 : f02

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

Sponsored Link


Comments

用户名 (required)

Email (will not be published) (required)

URL

Evaluation