かとじゅんの技術日誌

技術の話をするところ

ConditionBeanと格闘

ConditionBean.使い始めると便利ですね.

でも,少し疑問が,,,
以下のケースで,

cb.setupSelect_Author();

するのと,しないとではどう違うのでしょうか?
ドキュメントの文面では理解できませんでした.

4. Where句に指定する条件で無限階層のForeignTableのColumnの指定をサポート

        query().queryXxx().queryXxx().queryXxx()...と繋げることで「無限階層」に設定可能

        ex) BOOKに対してForeignTableのAUTHORを結合してAUTHOR_AGEで30歳以上を検索。(AUTHOR_AGE降順)
        /- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
        // select ...
        //   from BOOK book
        //     left outer join AUTHOR author on book.AUTHOR_ID = author.AUTHOR_ID
        //  where author.AUTHOR_AGE >= 30
        //  order by author.AUTHOR_AGE desc
        //
        final LdBookCB cb = new LdBookCB();
        cb.query().queryAuthor().setAuthorAge_GreaterEqual(30);// ☆Point
        cb.query().queryAuthor().addOrderBy_AuthorAge_Desc();
        final java.util.List<LdBook> ls = bhv.selectList(cb);
        ex) BOOKに対してForeignTableのAUTHORを結合してAUTHORの名称を取得したいが、
            AUTHOR_AGEが0歳のものは無効なものなので、結合に含めたくない検索。(AUTHOR_AGE降順)
            →但し、AUTHOR_AGEが0歳のAUTHORを参照しているBOOKは検索されなければならない。
        /- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
        // select book.BOOK_ID, book..., author.AUTHOR_ID as authorId_0, author...
        //   from BOOK book
        //     left outer join (select * from AUTHOR where AUTHOR_AGE != 0) author
        //       on book.AUTHOR_ID = author.AUTHOR_ID
        //  order by author.AUTHOR_AGE desc
        //
        final LdBookCB cb = new LdBookCB();
        cb.setupSelect_Author();
        cb.query().queryAuthor().inline().setAuthorAge_NotEqual(new BigDecimal(0));// ☆Point
        cb.query().queryAuthor().addOrderBy_AuthorAge_Desc();
        final java.util.List<LdBook> ls = bhv.selectList(cb);
        - - - - - - - - -/