[Seasar-user:8506] Re: [dbflute0.5.0] SQLの結果がEntityに格納されない
kubo
[E-MAIL ADDRESS DELETED]
2007年 6月 20日 (水) 18:25:25 JST
久保です。
> @Arguments( { "param1"}) を外して実行したところ、パラメタが引き渡されました。
>
> ただ、メール中のSQLは編集したもので、実際のプロジェクトではパラメタが3つあるのです。
> ですので、@Arguments は必須となります。。
>
> 他に怪しそうな個所はありますか?
> 例えば、パラメタは大文字のみ・小文字のみだとか。
>
> app.diconには、現在以下のとおりに記述していますが、問題ないですか?
>
> <?xml version="1.0" encoding="UTF-8"?>
> <!DOCTYPE components PUBLIC "-//SEASAR//DTD S2Container 2.4//EN"
> "http://www.seasar.org/dtd/components24.dtd">
> <components>
> <include path="convention.dicon"/>
> <include path="aop.dicon"/>
> <include path="app_aop.dicon"/>
> <include path="teedaExtension.dicon"/>
> <include path="dao.dicon"/>
> <include path="dxo.dicon"/>
> <include path="dbflute.dicon"/>
> </components>
ご報告ありがとうございます。
この問題と直接関係あるかどうかは不明なのですが、
<include path="dbflute.dicon"/>を付けている場合、
大抵の場合、<include path="dao.dicon"/>は不要になります。
この"dao.dicon"はアプリケーションで独自に作成したdao.diconでしょうか?
それとも、S2DaoのJARの中に入っているdao.diconをincludeしているのでしょう
か?
もし後者の場合は、この<include path="dao.dicon"/>を削除して
今一度試していただけますでしょうか?
自分、TigerのARGSアノテーションを使ったことがないため、
もしかしたらDBFlute側にその辺の連携に不備があるのかもしれません。
(定数のARGSアノテーションでは実績があります)
引き続き調査いたします。
一つ別の角度からSql2Entity利用方法のアドバイスをさせて頂きます。
Sql2Entityには、戻り値のEntityを自動生成するだけでなく、
「引数DTO」(ParameterBean)を自動生成する機能があります。
ex) LdBookDao.selectBookCollectionStatistic()の'.sql'
/- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
--#BookCollectionStatistic#
--*BOOK_ID*
--!BookCollectionStatisticPmb!
--!!java.math.BigDecimal bookId!!
--!!String bookName!!
select book.BOOK_ID
, book.BOOK_NAME
, (select count(*) from COLLECTION where BOOK_ID = book.BOOK_ID) as COLLECTION_COUNT
from BOOK book
/*BEGIN*/where
/*IF pmb.bookId != null*/book.BOOK_ID = /*pmb.bookId*/1/*END*/
/*IF pmb.bookName != null*/and book.BOOK_NAME like /*pmb.bookName*/'S2Dao' || '%'/*END*/
/*END*/
order by COLLECTION_COUNT desc
;
- - - - - - - - - -/
上記のように、
--!xxx!で引数DTOのクラス名、
--!!type xxx!!でそのDTOのプロパティ名
を指定してSql2Entityを実行するとその引数DTOが自動生成されます。
そのクラスを使って引数とすると、必ず「引数が一つ」になるため、
ARGSアノテーションをつける必要がありません。
実業務での画面の検索条件などは10個以上に渡る事も多く、
単純に引数が多くなって見にくくなってしまうのと、
引数のARGSアノテーションをつけるのが面倒なため(設定ミスも発生する)、
このような機能を設けています。
DBFluteとしては、
引数が複数になる場合は引数DTO(ParameterBean)を利用して
ARGSアノテーションを使わないことを推奨としています。
(自分の周りのプロジェクトではシステム全体で
一つもARGSアノテーションを 使ってなかったりします)
#
# 実は、C#版では上記の限りではないのですが、
# (Reflectionで変数名が取得できるためARGS属性は不要)
# 統一性を求めて、同様に引数DTO(ParameterBean)の利用を推奨しています。
#
Seasar-user メーリングリストの案内