次のように、Sybase にテーブルと sproc を設定します。
create table testtab (f float)
create proc insert_testtab @f float as insert testtab values(@f)
そして、Double を保持する Java オブジェクト
class TestObj { Double getF() { return 12.34; } }
SimpleJdbcCall と BeanPropertySqlParameterSource の使用:
SqlParameterSource params = new BeanPropertySqlParameterSource(new TestObj());
SimpleJdbcCall call = new SimpleJdbcCall(dataSource).withProcedureName("insert_testtab");
call.execute(params);
12.34 ではなく、12.0 がデータベースに挿入されます。カバーの下では、BeanPropertySqlParameterSource が数値を sproc に java.sql.Types.NUMERIC として渡し、小数点以下を切り捨てているようです。
これはおそらくSpringのSybaseコードに問題があるのでしょうか、それとも私が何か間違ったことをしているのでしょうか?