SpringBoot调用SQL Server存储过程时nvarchar转datetime报错
SpringBoot调用SQL Server存储过程POST接口报nvarchar转datetime错误的解决
问题现象
- GET接口调用目标存储过程可正常执行
- POST接口传递包含
id、state_id、name的JSON参数时,触发错误:Error converting data type nvarchar to datetime. - 通过SQL Server Profiler抓取到的执行语句,直接在SQL Server客户端执行无任何异常
- 存储过程中
creation_timestamp字段已设置为通过GETDATE()自动生成,无需手动传入
排查过程与原因
检查SpringBoot代码发现:实体类City定义了命名存储过程saveCity,在Controller调用该存储过程时,额外注册了输出参数message。这个多余的输出参数注册导致JDBC的参数映射逻辑出现偏差,错误地将某个字符串类型参数尝试转换为datetime类型,进而触发类型转换错误。
解决方案
注释掉Controller中注册输出参数message的代码,重新测试POST接口即可解决问题。
内容的提问来源于stack exchange,提问作者iamtarang
相关产品推荐
相关产品推荐

