在 Sybase 中有一个表和一个 sproc 设置,如下所示:
创建表 testtab (f float)
create proc insert_testtab @f float 作为插入 testtab 值(@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.0 被插入到数据库中,而不是 12.34。看起来,在幕后,BeanPropertySqlParameterSource 将数字作为 java.sql.Types.NUMERIC 传递给 sproc 并截断小数点。
谁能帮忙解释一下,这可能是 Spring 中的 Sybase 代码的问题,还是我做错了什么?