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

Ri.Kyoukun [E-MAIL ADDRESS DELETED]
2006年 7月 26日 (水) 12:09:03 JST


Leeです。
ほんまさんありがとうございました。

ちょっとしたソースというかとりあえず送付します。
よろしくお願いします。



--DAO
public static interface testDao {

 public String[] getEmpno(searchConditionDto dto);
 //public String getEmpno_ARGS = "dto";
}

--DTO
public class searchConditionDto {

 private String[] names = new String[]{"SMITH", "MARTIN", "ADAMS"};
 public void setNames(String[] param) {
  this.names = param;
 }
 public String[] getNames() {
  return names;
 }
}

--testDao_getEmpno.SQL
-----------------------------------
SELECT
 EMPNO
FROM
 EMP
WHERE
 ENAME IN /*dto.names*/
-------------------------------------





----- Original Message ----- 
From: "Hirotaka HONMA" <[E-MAIL ADDRESS DELETED]>
To: <[E-MAIL ADDRESS DELETED]>
Sent: Wednesday, July 26, 2006 7:08 AM
Subject: [Seasar-user:4180] Re: [S2Dao]IN句に配列が正しくバインドされてない


> ほんまです。
>
> 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 mailing list
> [E-MAIL ADDRESS DELETED]
> https://www.seasar.org/mailman/listinfo/seasar-user
> 




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