(上級機能として)
子テーブルの導出カラムを指定できるようになりました。
要は、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();
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