我一直在使用 springframework.jdbc 库来尝试从我的 webproject 中的数据库中检索数据。由于某种原因,跟踪中的这一行:
TRACE: org.springframework.jdbc.core.StatementCreatorUtils - Setting SQL statement parameter value: column index 15, parameter value [0.005], value class [java.math.BigDecimal], SQL type 2
当我在我的 sql server profiler 中捕获请求时,似乎将发送到类的值:0.005 转换为 5。正如跟踪所说,发送到类的值是 java.math.BigDecimal 类型,然后我使用 SQL 类型 2,即 java.sql.Types.NUMERIC,如下例所示:
declareParameter(new SqlParameter("Deviation", Types.NUMERIC));
我怀疑发生的事情是 javalayer 或休眠中的某些东西只发送 BigDecimal 值的 BigInteger 部分。我该如何解决这个问题,解决问题?任何建议都非常适用。我还输入了 log4j 可以跟踪的最喜欢级别的 java 中发生的事情的完整跟踪,以及 SQL Server Profiler 捕获的内容。
java中的跟踪:
DEBUG: org.springframework.jdbc.core.JdbcTemplate - Calling stored procedure [{call sp_MyProcedure(?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)}]
DEBUG: org.springframework.jdbc.datasource.DataSourceUtils - Fetching JDBC Connection from DataSource
TRACE: org.springframework.jdbc.core.StatementCreatorUtils - Setting SQL statement parameter value: column index 1, parameter value [null], value class [null], SQL type -7
TRACE: org.springframework.jdbc.core.StatementCreatorUtils - Setting SQL statement parameter value: column index 2, parameter value [null], value class [null], SQL type 4
TRACE: org.springframework.jdbc.core.StatementCreatorUtils - Setting SQL statement parameter value: column index 3, parameter value [null], value class [null], SQL type 4
TRACE: org.springframework.jdbc.core.StatementCreatorUtils - Setting SQL statement parameter value: column index 4, parameter value [329689], value class [java.lang.Integer], SQL type 4
TRACE: org.springframework.jdbc.core.StatementCreatorUtils - Setting SQL statement parameter value: column index 5, parameter value [1], value class [java.lang.Integer], SQL type 4
TRACE: org.springframework.jdbc.core.StatementCreatorUtils - Setting SQL statement parameter value: column index 6, parameter value [null], value class [null], SQL type 4
TRACE: org.springframework.jdbc.core.StatementCreatorUtils - Setting SQL statement parameter value: column index 7, parameter value [null], value class [null], SQL type 4
TRACE: org.springframework.jdbc.core.StatementCreatorUtils - Setting SQL statement parameter value: column index 8, parameter value [2013-09-18], value class [java.lang.String], SQL type 91
TRACE: org.springframework.jdbc.core.StatementCreatorUtils - Setting SQL statement parameter value: column index 9, parameter value [2013-09-19], value class [java.lang.String], SQL type 91
TRACE: org.springframework.jdbc.core.StatementCreatorUtils - Setting SQL statement parameter value: column index 10, parameter value [null], value class [null], SQL type 91
TRACE: org.springframework.jdbc.core.StatementCreatorUtils - Setting SQL statement parameter value: column index 11, parameter value [null], value class [null], SQL type 91
TRACE: org.springframework.jdbc.core.StatementCreatorUtils - Setting SQL statement parameter value: column index 12, parameter value [false], value class [java.lang.Boolean], SQL type -7
TRACE: org.springframework.jdbc.core.StatementCreatorUtils - Setting SQL statement parameter value: column index 13, parameter value [false], value class [java.lang.Boolean], SQL type -7
TRACE: org.springframework.jdbc.core.StatementCreatorUtils - Setting SQL statement parameter value: column index 14, parameter value [false], value class [java.lang.Boolean], SQL type -7
<--Value that becomes converted bellow-->
TRACE: org.springframework.jdbc.core.StatementCreatorUtils - Setting SQL statement parameter value: column index 15, parameter value [0.005], value class [java.math.BigDecimal], SQL type 2
TRACE: org.springframework.jdbc.core.StatementCreatorUtils - Setting SQL statement parameter value: column index 16, parameter value [null], value class [null], SQL type 4
TRACE: org.springframework.jdbc.core.StatementCreatorUtils - Setting SQL statement parameter value: column index 17, parameter value [true], value class [java.lang.Boolean], SQL type -7
DEBUG: org.springframework.jdbc.core.JdbcTemplate - CallableStatement.execute() returned 'true'
DEBUG: org.springframework.jdbc.core.JdbcTemplate - CallableStatement.getUpdateCount() returned -1
DEBUG: org.springframework.jdbc.core.JdbcTemplate - CallableStatement.getUpdateCount() returned -1
DEBUG: org.springframework.jdbc.core.JdbcTemplate - SQLWarning ignored: SQL state 'S0001', error code '0', message [20130919: 2]
DEBUG: org.springframework.jdbc.datasource.DataSourceUtils - Returning JDBC Connection to DataSource
在 SQL Server Profiler 中跟踪:
declare @p1 int
set @p1=8
exec sp_prepexec @p1 output,N'@P0 bit,@P1 int,@P2 int,@P3 int,@P4 int,@P5 int,@P6 int,@P7 date,@P8 date,@P9 date,@P10 date,@P11 bit,@P12 bit,@P13 bit,@P14 decimal(38,3),@P15 int,@P16 bit',N'EXEC sp_MyProcedure @P0, @P1, @P2, @P3, @P4, @P5, @P6, @P7, @P8, @P9, @P10, @P11, @P12, @P13, @P14, @P15, @P16 ',NULL,NULL,NULL,NULL,1,NULL,NULL,N'2013-09-18',N'2013-09-19',NULL,NULL,0,0,0,5,NULL,1
select @p1