私は春の jdbcTemplate.batchupdate を使用して一連のレコードを挿入しています。
String SQL_QUERY = "UPDATE RECORD_TABLE SET VALUE=?,LAST_UPDATE=?, LAST_USERNAME=? WHERE RECORD_NBR=?"
List<Object[]> updateParams = new Object[]{
myDomainVO.getBigDoubleValue(),
myDomainVO.getLastupdateDate(),
myDomainVO.getLastUserName(),
myDomainVO.getRecordNbr()
};
getJdbcTemplate().batchupdate(sql,updateParams);
今、私の Domain オブジェクトは 22 桁の double 値を持っていますが、このコードを実行すると、DB は 2147483647 である Integer.MAX_VALUE で更新されます。
また、int[] argType を batchUpdate の 3 番目のパラメータとして渡そうとしました。
int[] updateParamType = new int[]{
Types.DOUBLE,Types.DATE,Types.VARCHAR,Types.NUMERIC
}
なぜそのような振る舞いをするのか、誰でも説明できますか?
参考までに、私はオラクル11gを使用しています。