[Seasar-user:4180] Re: [S2Dao]IN句に配列が正しくバインドされてない

Hirotaka HONMA [E-MAIL ADDRESS DELETED]
2006年 7月 26日 (水) 07:08:21 JST


ほんまです。

on Tue, 25 Jul 2006 21:25:29 +0900
in [Seasar-user:4176] [S2Dao]IN句に配列が正しくバインドされてない
"Ri.Kyoukun" <[E-MAIL ADDRESS DELETED]> wrote:

> Leeです。
> Seasarの初心者です。
> 下記の問題で悩んでます〜〜
> 
> URL:http://s2dao.seasar.org/ja/s2dao.html#SQLBind
> 
> >IN句にバインド変数を適用したい場合は以下のようにすることができます。
> >- IN /*引数名*/(...)
> >IN /*names*/('aaa', 'bbb')引数はjava.util.Listや配列の引数となります。上記のIN句の場合は、以下のように引数を用意します。
> >String[] names = new String[]{"SCOTT", "SMITH", "JAMES"};
> 
> 上記のやり方で試してみたら、エラーになっちゃいます。
> 
> SQL結果:・・・・IN '[Ljava.lang.String;@54a25f' ←列の型が無効です。エラー
>  Throwable:org.seasar.framework.exception.SQLRuntimeException: [ESSR0071]SQLで例外が発生しました。理由はjava.sql.SQLException: 列の型が無効です。
> 
> 誰かが助けてください〜〜〜

trunkで試してみましたが、ちゃんと動きますよ。おそらく、ちょっ
としたSQL文の書き方が原因なのかと思います。
試したテストコードをコミットしましたので、ご覧頂けますか?
org.seasar.dao.impl.ListBindTestです。
引数がListの場合と配列の場合、それぞれをテストしています。

テストコードだけだとわかりづらいかも知れませんので、ちょっと
補足します。
ListBindTestでは、EMPテーブルのレコードを取得しています。
EMPテーブルのレコードは
s2-dao\src\test\resources\data\demo.script
に記述されているSQLのとおりになります。

なんでしたら、Leeさんが動かしたプログラムを添付して頂けると
もうちょっとわかるかもしれません。(^^

---
本間 宏崇 /** Hirotaka HONMA */
[E-MAIL ADDRESS DELETED]
ARK Systems Co., Ltd. : 株式会社アークシステム
http://www.arksystems.co.jp/




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