[Seasar-user:17813] Re: [S2JDBC] where句の生成で、Parameter.timestamp は 文字列による生成専用(SimpleWhere では使えない)でしょうか?

O.K.U. [E-MAIL ADDRESS DELETED]
2009年 6月 22日 (月) 02:32:06 JST


O.K.U.です。

早々と回答、ありがとうございました。

java.sql.Timestamp ですと、どちらの生成方法でも
そのまま使えるようなので、この型でデータを保持することにします。

また、しばらくの間、色々質問させていただくかもしれませんが、
よろしくお願いいたします。




--------------------------------------------------
From: "Koichi Kobayashi" <[E-MAIL ADDRESS DELETED]>
Sent: Sunday, June 21, 2009 4:30 AM
To: <[E-MAIL ADDRESS DELETED]>
Subject: [Seasar-user:17810] Re: [S2JDBC] where句の生成で、Parameter.timestamp 
は 文字列による生成専用(SimpleWhere では使えない)でしょうか?

> 小林 (koichik) です.
>
> Date:    Sun, 21 Jun 2009 03:27:41 +0900
> From:    "O.K.U." <[E-MAIL ADDRESS DELETED]>
> To:      <[E-MAIL ADDRESS DELETED]>
> Subject: [Seasar-user:17809] [S2JDBC] where句の生成で、Parameter.timestamp 
> は 文字列による生成専用(SimpleWhere では使えない)でしょうか?
>
>> 今回は S2JDBC に関する質問です。
>> where句の自動生成で、java.util.Calendar 型のデータを扱う場合に
>> org.seasar.extension.jdbc.parameter.Parameter.timestamp(Calendar)で
>> ラップすると、SQL文字列による指定ではうまく動作しますが、
>> SimpleWhereによる指定 では ParseRuntimeException が発生します。
>> date(), time() も同様です。これら
>> org.seasar.extension.jdbc.parameter.Parameter.
>> パッケージは文字列によるSQL生成専用のクラスなのでしょうか?
>
> timestamp() 等は,selectBySqlFile() などで
> パラメータの型を示す必要がある場合に使うものです.
>
> select() の場合,where(String, Object...) は
> 任意の SQL フラグメントを指定できるので,
> java.util.Date/Calendar をパラメータとする場合は
> 型を明示するために timestamp() 等を指定する必要が
> ありますが,SimpleWhere を使う場合はエンティティの
> 定義から型を求めるので timestamp() 等の指定は不要です.
>
>> SimpleWhereでは、DB の timestamp 型との比較は
>> 単純に Calendar をそのまま,あるいは java.sql.Timestamp 型で
>> 渡せばよいのでしょうか?
>
> はい.
>
> 指定しなくてもいい,というより指定すると例外に
> なるのはちょっといただけないので修正したいと思います.
> とりあえず SimpleWhere では timestamp() 等の指定は
> 外してください.
>
> なお,どんな場合でも java.sql.Date/Time/Timestamp を
> パラメータとする場合は date()/time()/timestame() は
> 不要です.これらはその型と SQL 型との対応が一意に
> 決まるためです.
> 指定が必要なのは,java.util.Date/Calendar を
> パラメータとする場合です.これらの場合は SQL の
> DATE/TIME/TIMESTAMP のどの型を意図しているのか
> 示す必要があります.
>
 



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