[Seasar-user:3588] [S2DAO]Bean プロパティを使った SQL アノテーションで List 取得ができない

h-hide21 [E-MAIL ADDRESS DELETED]
2006年 5月 10日 (水) 08:26:54 JST


橋本と申します。既出なことであれば大変恐縮ですがその旨の
回答で結構ですのでご指示ください。
また稚拙な問題で申し訳ありませんがよろしくお願いします。

S2Dao-1.0.31 + Oracle 9iR9.2 にて

表hogeに対し、Daoに定義したあるメソッドに対しSQLアノテー
ションを
使用し、そのSQL文中にはBeanによるプロパティ値を埋め込み
ました。

--表hogeの作成
create table hoge
(
  foo1     varchar2(10) not null,
  foo2     varchar2(10) not null,
  foo3     number,
  date_foo date default
to_date(to_char(sysdate,'yyyy-mm-dd'),'yyyy-mm-dd') not
null
);
--主キーの作成
alter table hoge add constraint pk_hoge primary key (foo1,
foo2, date_foo);

hogeDaoインターフェースを実装したクラスでメソッド
getGroupList(Hoge hoge)を呼び出すと、

//hogeDaoインターフェース

List getGroupList(Hoge hoge);
static final String getGroupList_SQL	= 
"SELECT foo1, foo2, sum(foo3) AS foo3 "
+ "FROM HOGE "
+ "WHERE date_foo =
TO_DATE(/*hoge.date_foo*/'2000-01-01','yyyy-mm-dd') "
+ "GROUP BY foo1, foo2";

DEBUG SELECT foo1, foo2, sum(foo3) AS foo3 FROM HOGE WHERE
date_foo = TO_DATE('2006-05-10','yyyy-mm-dd') GROUP BY
foo1, foo2
DEBUG 論理的なコネクションを取得しました
DEBUG 論理的なコネクションを閉じました
DEBUG getGroupList Size :0

としてSQLが生成され、発行SQL文はOracle上(SQL*Plus)で
取得でき得るものと確認はできたのですが、このhogeDaoを
持つクラスでgetGroupList(Hoge hoge)を呼び出すと0件
となり、例外もなく通過されます。

結局、hogeDao#getHogeList(HogeDto dto)のSQLアノテーショ
ンにおいて、
Beanプロパティによる埋め込みコメントをやめ、引数も
StringにしたことでListの件数が正しく取得することが
できました。

List getGroupList2(String date_foo);
static final String getGroupList2_ARGS	= "date_foo";
static final String getGroupList2_SQL	= 
"SELECT foo1, foo2, sum(foo3) AS foo3 "
+ "FROM HOGE "
+ "WHERE date_foo =
TO_DATE(/*date_foo*/'2000-01-01','yyyy-mm-dd') "
+ "GROUP BY foo1, foo2";

DEBUG SELECT foo1, foo2, sum(foo3) AS foo3 FROM HOGE WHERE
date_foo = TO_DATE('2006-05-10','yyyy-mm-dd') GROUP BY
foo1, foo2
DEBUG 論理的なコネクションを取得しました
DEBUG 論理的なコネクションを閉じました
DEBUG getGroupList2 Size :4

本質的な使用方法の間違い、と言われるのかもしれませんが
どこがイレギュラな利用であるのかをご教授いただけたら
幸いです。



--------------------------------------
Yahoo! JAPAN 10th Anniversary Special Feature
--- Enjoy Yahoo! Auction with Yahoo! Mail !! ---
http://pr.mail.yahoo.co.jp/auction/



Seasar-user メーリングリストの案内