[Seasar-user:1291] Re: (質問) S2Dao で検索条件DTOを指定しての動的ORDER BY句を付加するには?

AGATA Toshitaka throw_and_catch
2004年 12月 2日 (木) 17:19:49 JST


縣です。

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 mailing list
>[E-MAIL ADDRESS DELETED]
>http://lists.sourceforge.jp/mailman/listinfo/seasar-user
__________________________________
STOP HIV/AIDS.
Yahoo! JAPAN Redribbon Campaign
http://pr.mail.yahoo.co.jp/redribbon/




Seasar-user メーリングリストの案内