[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 メーリングリストの案内