【发布时间】:2018-09-22 02:54:10
【问题描述】:
我正在使用 Spring Data JPA,但遇到了一些我无法解决的奇怪行为。
@Query(value="EXEC dbo.spChartPracticeInternalDoctor ?, ?, ?, ?", nativeQuery = true)
List<ReportDataSet> spChartPracticeInternalDoctor(Long id, String date,Long months, String tests);
当我在不包含空格的测试中传入 CSV 字符串时,存储过程会正确执行(即 SC、ECG)
但是当我传入带有空格的测试字符串时,它会出错。
例如SC,ECG,IP标准咨询
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时没有正确转义字符串,但我不知道如何覆盖转义。
如果有任何想法来解决这个问题,我将不胜感激
【问题讨论】:
标签: sql-server spring hibernate spring-data-jpa