[Seasar-user:8481] Re: [dbflute0.5.0] SQLの結果がEntityに格納されない
kubo
[E-MAIL ADDRESS DELETED]
2007年 6月 20日 (水) 01:55:36 JST
久保です。
> テーブルBのCOL2にも値が登録されているのにもかかわらず、
> SQLの実行結果(ログの下から2行目)にはnullが返ってきています。
> ログ出力されたSQLを実行すると、B.COL2は取得できています。
>
> ADaoにメソッドを定義した場合、AEntity に設定されていないプロパティには
> SQLの結果がセットされないような動きをしています。
> この現象は仕様なのでしょうか?
> SQL2Entityのドキュメント内に適切なDaoにメソッドを定義と書かれていたので、
> 問題ないのかと思っていました。
>
> また、複数のテーブルから値を取得する場合は、どのようにすればよろしいのでしょうか?
やり方は合っています。
ADaoに「AbEntityを戻り値にしたメソッド」を追加するやり方で問題ありません。
どんなテーブルを結合してもSelect句の名前とEntityのプロパティ名を当てて
マッピングするため、結合したどの列の値も取得可能です。
ひとまず環境的なところを2点確認させてください。
1. S2DaoのVersionはいくつでしょうか?
DBFlute-0.5.0のデフォルトはS2Dao-1.0.43(最新)なので恐らくそれだと
思われますが、念のため確認させて下さい。
2. 自動生成された'dbflute.dicon'をそのまま利用されてますでしょうか?
提供頂きましたログの方ですが、ML投稿用に修正されたのかもしれませんが、
ちょっと見慣れないログの出方をしていたので念のため確認です。
通常、DBFluteのS2DaoInterceptorを使うと以下のようのログが出力されます。
/================================================================
XxxDao.selectList()
===================/
SELECT A.COL1, B.COL2
FROM A
INNER JOIN B ON
A.COL1 = B.COL1
WHERE
A.COL4='hoge'
--#AbEntity#
===========/ [00m00s657ms - Selected count:...
このようなログが出力されていれば、DBFluteの機能を使っている証拠です。
もし、このログが出ていないようであれば、DBFluteのS2Dao拡張クラスが
設定されてない可能性があります。
具体的には、自動生成されたクラスのあるメソッド:
allcommon.s2dao.S2DaoMetaDataExtension#setupSelectMethodByManual()
をDaoメソッド実行時に必ず通過しなければなりません。
こちらのログのトレースを入れて必ずメソッドが呼び出されていることで
確認も可能です。
Seasar-user メーリングリストの案内