SpringframeworkのOracleLobHandler
OracleのCLOBを使いたいというところがあったので、
ちょっと調べてみた。
OracleLobHandlerに、nativeJdbcExtractorをセットする。
僕らはAPサーバはWebSphereなんで、
WebSphereのコネクションラッパーから、
Oracleのコネクションを取り出すためのクラスが、
これまたSpringframeworkで用意されてる。
iBatisにも、Springframeworkで用意してる
ClobStringTypeHandlerを記述する。
ソースを見ていたら、OracleLobHandlerはどうやらバグってそうだ。
SelectのあとでClobをStringに変換する際に、
longをintへキャストしてる箇所がある。
java.sql.Clobのsubstring用のメソッド。
longな開始位置、1から。
intな長さ。
long java.sql.Clob#length()を、
そのままintな長さにキャストする暴挙。
マイナスになっちゃうことがあるよ。
なんて初歩的なことをやらかしてんだか。
面倒臭いなー。
そんな長さで使わない確約を取って、
こいつら使ってもらうべ。