@DBFlute-0.9.4, Java 例えば、会員リストの検索で、 「会員ステータス「退会会員」・「正式会員」・「仮会員」の順」 で並べたい場合、会員ステータスに「表示順(DISPLAY_ORDER)」の ようなソート用カラムを作って、そのカラムで並べるようにする のがよくやる手法です。ほとんどの場合これでOKだと思います。 しかし、どうしてもDBにそういったカラムを追加することが できない事情があったり、一部処理だけそのカラムの値とは 違う順序で並べたいとか特殊な要件があったりした場合のために 以下のように並べる順序を指定できるようにしました。
final MemberCB cb = new MemberCB(); List<String> ls = new ArrayList<String>(); ls.add(CDef.MemberStatus.Withdrawal.code()); ls.add(CDef.MemberStatus.Formalized.code()); ls.add(CDef.MemberStatus.Provisional.code()); cb.query().addOrderBy_MemberStatusCode_Asc().withManualOrder(ls);
select dflocal.MEMBER_NAME as c1, ... from MEMBER dflocal order by case when dflocal.MEMBER_STATUS_CODE = 'WDL' then 0 when dflocal.MEMBER_STATUS_CODE = 'FML' then 1 when dflocal.MEMBER_STATUS_CODE = 'PRV' then 2 else 3 end asc
ConditionBeanPlatinumTestの test_query_addOrderBy_withManualOrder_Tx() にてExampleがあります。 一つ制限として、UNIONと共演することはできません。