[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 メーリングリストの案内