- PR -

hibernateでの検索結果

1
投稿者投稿内容
hiro
常連さん
会議室デビュー日: 2005/03/10
投稿数: 32
投稿日時: 2005-07-07 18:07
お世話になります。

どなたかご存知であれば教えてください。

hibernateでCOUNTを返すHQLを作成し、Listを返すメソッドを作成しました
コード:
    Query query = session.createQuery("select count(*), Foo.ymd from test.foo as FOO group by Foo.ymd");
    List list = query.list();


とした場合、list内に配列のリストが作成されます。
コード:
List内のオブジェクト 
list++
     Object[]++
              +Integer
              +String
    ・
  ・
  ・



これでは、受け取り側での出力操作が煩雑になるのでBeanで受け取れないかと考えてます。
そこで、Fooクラスに「Count()」の結果を保持するプロパティを設け、それとマッピングする方法を考えましたが、他になにかよい案はないでしょうか?

よろしくお願いします。








ロス
常連さん
会議室デビュー日: 2005/03/25
投稿数: 26
投稿日時: 2005-07-08 12:28
べたですが、こんな感じでBeanのリストを作ってあげればいいとおもいます。
(上のSQLを利用する場合)

List resultList = query.list();

List beanList = new ArrayList();
for (int i = 0; i < resultList.size(); i++) {
Object[] objs = (Object[]) resultList.get(i);

Integer count = (Integer) objs[0];
String ymd = (String) objs[1];

xxxBean xxx = new xxxBean();
xxx.setCount(count);
xxx.setCount(ymd);

beanList.add(xxx);
}
hiro
常連さん
会議室デビュー日: 2005/03/10
投稿数: 32
投稿日時: 2005-07-08 14:24
ロスさんレスありがとうございます。

とりあえず、ロスさんの実装方法を組み込こんでいますが、
この方法の場合、hibernateによるResultSetからList(内部Object配列)変換と
List(内部Object配列)からList(Bean)の変換が起こりオーバーヘッドが気になりました。
hibernateの利点はあまりオーバーヘッドを起こさずBeanに結果を格納できることと考えていましたが、この場合無理なのでしょうか?
1

スキルアップ/キャリアアップ(JOB@IT)