Иметь таблицу и настройки sproc в Sybase следующим образом:
создать таблицу testtab (f float)
создать proc insert_testtab @f float в качестве значений вставки testtab (@f)
И Java-объект, который содержит Double
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 передает номер sproc как java.sql.Types.NUMERIC и усекает десятичные дроби.
Может кто-нибудь помочь объяснить это, возможно, это проблема с кодом Sybase в Spring, или, возможно, я что-то делаю неправильно?