きどたかのブログ

いつか誰かがこのブログからトラブルを解決しますように。

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な長さにキャストする暴挙。
マイナスになっちゃうことがあるよ。


なんて初歩的なことをやらかしてんだか。
面倒臭いなー。
そんな長さで使わない確約を取って、
こいつら使ってもらうべ。