- - PR -
iBATISとOracleの連携
投稿者 | 投稿内容 |
---|---|
|
投稿日時: 2007-11-01 15:25
とすると問題の動作はOracleJDBCの仕様っぽいですね。
|
|
投稿日時: 2007-11-01 17:06
OraclePreparedStatementのsetFixedCHARを使用するといけるかもですねぇ。。
まだ検証はしていませんが。 と、なると。ソースコード中にミドルウェアの名前が入ってしまうってことですね・・うーむ。。 |
|
投稿日時: 2007-11-01 17:44
であれば、
iBatisは自分自身でカスタムタイプハンドラーを作成できるので、その中で PreparedStatementをOraclePreparedStatementへダウンキャストし、 setFixedCHAR()をコールするのがいいと思います。 |
|
投稿日時: 2007-11-02 10:16
Anthyhimeさん、
度々ご返答ありがとうございます。 無事動作させることができました! 参考までにサンプルコードを載せておきますね。 public class CharTypeHandlerByOracle implements TypeHandlerCallback { /** * {@inheritDoc} */ public Object getResult(ResultGetter getter) throws SQLException { String result = getter.getString(); return result; } /** * {@link OraclePreparedStatement#setFixedCHAR(int, String)}を実行する。 * {@inheritDoc} */ public void setParameter(ParameterSetter setter, Object parameter) throws SQLException { String str = (String) parameter; OraclePreparedStatement oracleState = (OraclePreparedStatement) setter.getPreparedStatement(); oracleState.setFixedCHAR(setter.getParameterIndex(), str); } /** * {@inheritDoc} */ public Object valueOf(String s) { return s; } } *** sql-map-config.xml *** <typeHandler javaType="java.lang.String" callback="jp.caravelmap.ws.sqlmap.engine.type.CharTypeHandlerByOracle" jdbcType="CHAR" /> |