[Seasar-user:1467] Re: S2Dao:where句の一部をバインドできないでしょうか。
NAKAMURA Manabu
under_the_starry
2005年 2月 2日 (水) 22:51:56 JST
こんばんは、中村と申します。
動的に生成する部分をパラメータとして渡さないで、
文字列のまま渡してやればできないでしょうか?
> select *
> from a_tbl
> where a_tbl.where_cd = '8899'
> and ((a_tbl.what_cd = '0' and a_tbl.why_cd = '1') or
> (a_tbl.what_cd = '3' and a_tbl.why_cd = '2') or
> (a_tbl.what_cd = '3' and a_tbl.why_cd = '2'))
というSQLを実行したい場合、
((a_tbl.what_cd = '0' and a_tbl.why_cd = '1') or
(a_tbl.what_cd = '3' and a_tbl.why_cd = '2') or
(a_tbl.what_cd = '3' and a_tbl.why_cd = '2'))
この部分を動的に生成する時に、
((a_tbl.what_cd = ? and a_tbl.why_cd = ?) or
(a_tbl.what_cd = ? and a_tbl.why_cd = ?) or
(a_tbl.what_cd = ? and a_tbl.why_cd = ?))
というパラメータ付きの形で生成して、同時に
Object[] params = [0, 1, 3, 2, 3, 2];
という配列も一緒に生成します。
で、この配列の先頭に固定のパラメータの 8899 を挿入してやって、
EntityManager で、
getEntityManager().find("a_tbl.where_cd = ? and " + 生成した文字列, 生成した配列);
という形で実行すればいけるんじゃないかと思います。
お試しください。
--------------------------------------
中村 学/NAKAMURA Manabu
[E-MAIL ADDRESS DELETED]
--------------------------------------
Seasar-user メーリングリストの案内