[Seasar-user:3792] Re: [S2Dao] PostgreSQL INTERVAL型

Hirotaka HONMA [E-MAIL ADDRESS DELETED]
2006年 6月 7日 (水) 16:57:12 JST


ほんまです。

On 6/5/06, Hirotaka HONMA <[E-MAIL ADDRESS DELETED]> wrote:

> そもそもPreparedStatemantでinterval型へバインドできないので
> したら他の手段を考える必要がありますし、バインドできるのでし
> たらPreparedStatemantのメソッドと引数の型がわかれば何らかの
> 方法で対応できると思っています。

7系のPostgreSQL JDBCドライバでは、PreparedStatement#setString
やsetTimeでバインドできるのですが、8系のドライバにするとバイ
ンドできなくなりました。

setString, setDate, setTimestamp, setTimeなど試してみたので
すがダメで、PostgresのPGInterval型でsetObjectすればOKなよう
です。

というわけで回避方法は...

  1. 7系のJDBCドライバを使う (今は8系のをお使いですよね?)

  2. SQLをCASTするように変更する
     insert into foo (id, value) values (?, ?)
     ↓
     insert into foo (id, value) values (?, CAST (? AS INTERVAL))

  3. PGInterval型へ変換してPreparedStatement#setObjectする
     ValueTypeを作成し、S2Daoへ登録する

の3通りがあると思います。



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