DBFlute: 0.7.4-子テーブル導出

(上級機能として)
子テーブルの導出カラムを指定できるようになりました。
要は、max() / min() / sum() / avg() / count() です。

※Javaのみ
// 会員一覧で、(モバイルからのログインを除く)最終ログイン日時も取得
MemberCB cb = new MemberCB();
cb.specify().derivedMemberLoginList().max(new SubQuery<MemberLoginCB>() {
    public void query(MemberLoginCB subCB) {
        subCB.specify().columnLoginDatetime();// *Point!
        subCB.query().setLoginMobileFlg_Equal_False();
    }
}, "LATEST_LOGIN_DATETIME");
select member.*
     , (select max(LOGIN_DATETIME)
          from MEMBER_LOGIN
         where MEMBER_ID = member.MEMBER_ID
           and LOGIN_MOBILE_FLG = 0
       ) as LATEST_LOGIN_DATETIME
  from MEMBER member
導出カラムの値を受け取る「箱」として、ExtendedのEntityに
手動でプロパティを定義する必要があります。
protected Date _latestLoginDatetime;
public Date getLatestLoginDatetime() {
    return _latestLoginDatetime;
}
public void setLatestLoginDatetime(Date latestLoginDatetime) {
    _latestLoginDatetime = latestLoginDatetime;
}
検索自体は単純なんだけど、
子テーブルの「件数」や「なんとかの最大値」も一緒に検索したいことが
結構多いです。というか普通に業務フロー設計やってるとそういう項目を
画面に表示したいときが結構あります。
(今まではプログラマが泣いてましたがこれなら)

実は実は実は、自分自身(jflute)が一番欲しかった機能かもしれない。
自分が一ユーザとしてDBFluteに切望してた機能ですね。

id:quiethicさんに早速DBFluteTeedaExampleで使ってもらっています。
DBFluteTeedaExample画面も増えていますので、ぜひご覧下さい。

https://www.seasar.org/svn/sandbox/dbflute/trunk/dbflute-teeda-example