[Seasar-user:19708] Re: [S2JDBC]SQLファイル使用時の挙動について

Manabu Inoue [E-MAIL ADDRESS DELETED]
2010年 5月 8日 (土) 02:05:05 JST


井上です。

回答ありがとうございます。
明示的にエントリが1つならという実装がされていましたので
おそらく仕様なんだろうと思ったものの、
なぜそういう実装にしているのかわからなかったのですが、
なるほど、そういうことですね。
過去から継承されてきた挙動ということであれば
変えるわけにもいきませんね。
バインドパラメータが不足しないよう注意して利用したいと思います。
ありがとうございました。

> 小林 (koichik) です.
> 
> Date:    Fri, 07 May 2010 04:12:51 +0900
> From:    Manabu Inoue <[E-MAIL ADDRESS DELETED]>
> To:      [E-MAIL ADDRESS DELETED]
> Subject: [Seasar-user:19698] [S2JDBC]SQLファイル使用時の挙動について
> 
> > バインドパラメータに Mapを使用した場合に、
> > SQLファイル内のバインド変数がMapに存在しない場合は
> > 「引数(変数名)が見つかりません」というWARNログが出力されます。
> > また、上記の場合でかつ、Map内のエントリが1つの場合、
> > SQLファイルのすべてのバインド変数に、変数名が異なるにもかかわらず
> > Map内の1つのエントリの値がセットされます。
> (略)
> > 上記の挙動はS2JDBCの仕様でしょうか?
> 
> 意図した仕様というわけではないと思いますが,
> 現状の実装はそうなってますね.
> 
> パラメータが 1 つだけの場合,Map でも Dto でも
> なく,その値を直接指定することができます.
> 
> List<EmployeeDto> results = 
>     jdbcManager
>         .selectBySqlFile(
>             EmployeeDto.class, 
>             "examples/sql/employee/selectAll.sql", 10)
>         .getResultList();
> 
> このように渡されたいわば名無しのパラメータも
> Map や Dto を渡された場合と同様,内部的には 
> Map で管理しているため,エントリが 1 つの場合は
> 名無しのパラメータが要求されたとみなしていると
> いうのが現状の実装と思われます.
> 
> S2JDBC 的にはこの名無しのパラメータは $1 という
> 名前で扱うので,このような実装になっている必要は
> ないと思うのですが,このクラスは S2JDBC 以前に
> S2Dao から移植されて Kuina-Dao でも使われているので,
> このまま仕様扱いですかねー.
> 
> 
> -- 
> <component name="koichik">
>     <property name="fullName">"Koichi Kobayashi"</property>
>     <property name="email">"[E-MAIL ADDRESS DELETED]"</property>
>     <property name="blog">"http://d.hatena.ne.jp/koichik"</property>
> </component>

-- 
Manabu Inoue <[E-MAIL ADDRESS DELETED]>



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