[Seasar-user:19759] Re: 【S2JDBC】Whereクラスのブール型の変換

渡辺茂昭 [E-MAIL ADDRESS DELETED]
2010年 5月 17日 (月) 02:01:22 JST


 渡辺茂昭です。

 休日にもかかわらず、さっそくの回答ありがとうございます。
 
>小林 (koichik) です.
>
>Date:    Sun, 16 May 2010 17:54:26 +0900
>From:    渡辺茂昭 <[E-MAIL ADDRESS DELETED]>
>To:      [E-MAIL ADDRESS DELETED]
>Subject: [Seasar-user:19756] 【S2JDBC】Whereクラスのブール型の変換
>
>>  さて、今回ですが1つ確認させてください。S2JDBCのComplexWhereを使用して、
>> SQL変数をバインドするとき、対象となるエンティティ(もしくはテーブルか)
>> のフィールドがブール(テーブル上はTinyInt(1))の場合、実際発行するSQL文
>> の該当する条件が'true'もしくは'false'(文字列リテラル)となっているようで
>> すが、これは仕様なのでしょうか?
>
>いいえ.
>Boolean のプロパティならそのまま PreparedStatement#
>setBoolean() を使ってバインドします.
>Oracle の場合は 0 または 1 の数値で setInt() しますが,
>MySQL であればそのまま setBoolean() が使われます.
 やっぱりそうですか、SqlLog#getLast()でみると条件節の該当部分が
「xxxFlag='true'」となっていたもので、質問してみました。では、こちらで実
装しているコードに何か不備がありそうですね。再度精査してみます。
 
 
>
>文字列リテラルになっているというのはどのように
>確認しましたか?
>
>>  該当の部分のコードの一部を載せておきます。
>>  
>> 	else if (field.getType().equals(Boolean.class)) {
>> 		if (StringUtil.isEmpty(otdo.toString())) continue;
>> 		ret = ret.eq(fname, Boolean.valueOf(otdo.toString()));
>> 	}
>
>これがなんのコードなのかわからないし,具体的な
>問題がなんなのかもわかりません.
>
 すみません、端折りすぎましたね。エンティティの該当フィールドがBoolean
のときにBooleanを代入している、というところのコードを転記したつもりだっ
たのですが....
 
>
>-- 
><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>
>
>_______________________________________________
>Seasar-user mailing list
>[E-MAIL ADDRESS DELETED]
>https://ml.seasar.org/mailman/listinfo/seasar-user


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