[Seasar-user:1292] Re: (質問) S2Dao で検索条件DTOを指定しての動的ORDER BY句を付加するには?
hasi
hasimoto
2004年 12月 2日 (木) 17:41:04 JST
縣さん、早々の回答ありがとうございます。
縣さんの方法でうまくいきました!!
実際には、コード系テーブルを結合したレコードを取得しているので
XXXDao_findByCondition.sql に IF文 を書きました。
どうもありがとうございました。
On Thu, 02 Dec 2004 17:19:44 +0900
AGATA Toshitaka <[E-MAIL ADDRESS DELETED]> wrote:
> 縣です。
>
> QUERYアノテーションを使うと対応できるみたいです。
>
> List findByCondition(FindXxxxxCondition condition);
> public String findByCondition_QUERY = "ORDER BY " +
> "/*IF dto.sort == 'ID'*/ ID /*END*/" +
> "/*IF dto.sort == 'STATUS'*/ STATUS_ID /*END*/" +
> "/*IF dto.sort == 'CREATED'*/ CREATED /*END*/" +
> "/*IF dto.sort == 'UPDATED'*/ UPDATED /*END*/" +
> "/*IF dto.order */ ASC /*END*/" +
> "/*IF !dto.order */ DESC /*END*/";
>
> IF文を使っているのは、S2Daoで文字列をSQL中に出力する場合、
> 必ずシングルクォートが付いてしまうためです。
> シングルクォートを付けずに、文字列をSQL中に出力できる
> 表記方法があればIF文無しで以下のようにかけるのでしょうけどね。
> (例えば!をつけるとか)
>
> public String findByCondition_QUERY = "ORDER BY " +
> "/*!dto.sort*/ID /*!dto.order*/ASC " +
>
> >こんにちは、橋本と申します。
> >
> >S2Daoで引数にDTOを指定する場合の ORDER BY句を動的に切り替えることって
> >できるのでしょうか?
> >
> >ORDER BY句を動的に変更するにはEntityManagerを使えばいけると
> >思うのですが、EntityManager#find で DTO って指定できないですよね?
> >
> >こういうのを実現しようとすると EntityManagerを使わずに
> >自動生成SQL機能を使って ORDER BY 句のパターン分Daoインタフェースに
> >メソッドを追加するしかないのでしょうか?
───────────────────────────────
株式会社穴吹カレッジサービス
ソフト開発事業部 徳島支店 システム開発課
橋本昌典 [E-MAIL ADDRESS DELETED]
TEL:088-655-1331 FAX:088-655-1385
--------------------------------------------------------------
Seasar-user メーリングリストの案内