Hibernate HQLクエリ - 戻り値をnew mapでMap型に
2008/09/12 21:21Update
データベースに問い合わせを行う際、戻り値のコレクションに含める要素をMap型にしたいときがあります。こんなとき、Hibernate HQLクエリの場合、new mapを使います。
使い方
例1:
select new map(t1.c1, t2.c2) from TableEntity1 t1 ,TableEntity2 t2 where ...
例2:
select new map('Hello', 100, c.id, c.name) from Cat c where ...
※new mapに指定できる項目は数に限りがありません。
※項目に、エンティティのプロパティ名や文字列、数字などを指定することが可能です。
※Mapの(key, value)は("0,1,2..", "項目値1,項目値2,項目値3,..")のようになります。
サンプル
Hibernate HQLのnew mapについて使ってみます。
◇FATHERテーブル
ID NAME
1 f01
2 f02
※FATHERに対応するエンティティやマッピングの定義をここで省きます。
◇テストコード(抜粋)
public static void testHqlNewMap(Session sess) {
String hql = "select new map('Hello', 100, f.id, f.name) from Father f where f.name like 'f%'";
Query query = sess.createQuery(hql);
List <Map> mapList = query.list();
for (Map map: mapList) {
System.out.println("==========");
Set keySet = map.keySet();
for (Iterator ite = keySet.iterator(); ite.hasNext();) {
String key = (String)ite.next();
Object value = map.get(key);
System.out.println(key + "=" + value);
}
}
}
◇実行ログ
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%'
==========
3=f01
2=1
0=Hello
1=100
==========
3=f02
2=2
0=Hello
1=100
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)