我正在使用Spring Data JPA并且遇到了一些我无法解决的奇怪行为。
@Query(value="EXEC dbo.spChartPracticeInternalDoctor ?, ?, ?, ?", nativeQuery = true)
List<ReportDataSet> spChartPracticeInternalDoctor(Long id, String date,Long months, String tests);
当我在不包含空格的测试中传入CSV字符串时,存储过程正确执行(即SC,ECG)
但是当我传入带有空格的测试字符串时,它会出错。
e.g。 SC,ECG,IP Standard Consult
2018-04-12 12:45:13.309 DEBUG 684 --- [ XNIO-2 task-2] com.pci.dprm.aop.logging.LoggingAspect : Enter: com.pci.dprm.web.rest.ReportDataSetResource.spChartPracticeInternalDoctor() with argument[s] = [36, 2018-04-12T12:05:01 08:00, 24, SC,ECG,IP Standard Consult]
Hibernate: EXEC dbo.spChartPracticeInternalDoctor ?, ?, ?, ?
2018-04-12 12:45:13.316 WARN 684 --- [ XNIO-2 task-2] o.h.engine.jdbc.spi.SqlExceptionHelper : SQL Error: 8114, SQLState: S0001
2018-04-12 12:45:13.317 ERROR 684 --- [ XNIO-2 task-2] o.h.engine.jdbc.spi.SqlExceptionHelper : Error converting data type nvarchar to date.
似乎hibernate在将字符串传递给SQL时没有正确转义字符串,但我无法弄清楚如何覆盖转义。
我很感激处理这个问题的任何想法
答案 0 :(得分:0)
我认为错误不是因为第4个参数因为第2个参数。日志显示 - &gt;将数据类型nvarchar转换为日期时出错。
我认为您需要将第二个参数转换为Date。 请参阅以下代码段以供参考。
@Query(value="EXEC dbo.spChartPracticeInternalDoctor ?, ?, ?, ?", nativeQuery = true)
List<ReportDataSet> spChartPracticeInternalDoctor(Long id, Date date,Long months, String tests);