【发布时间】:2018-11-14 14:36:30
【问题描述】:
@Query 中的 Spring Data 有一个大问题。
我有以下疑问:
SELECT created_at::DATE "date",
count(*)
FROM
absence
WHERE
created_at::DATE between '2018-05-27' AND '2018-05-31'
GROUP BY created_at::DATE;
这个查询可以在 postgres 中正常使用,现在春天可以使用它:
@Query("SELECT created_at\\:\\:DATE \"date\",count(*) FROM absence " +
"WHERE created_at\\:\\:DATE between '?1' AND '?2' " +
"GROUP created_at\\:\\:DATE", nativeQuery = true)
fun getAbsenceCount(beginDate: String,endDate: String): List<AbsenceCount>
这个查询根本不起作用,问题是spring无法识别parather beginDate (?1) & endDate (?2)。 我尝试了很多来自stackoverflow的解决方案,例如solution和solution 2,但我无法摆脱这个问题。 不知道是故意的还是春天的bug。
【问题讨论】:
-
您是否尝试过不在 '?1' 和 '?2' 周围添加引号?它是这样工作的还是显示了一些不同的错误?
-
@KuldeepSidhu 是的,但需要单引号;这是我得到的错误:
org.postgresql.util.PSQLException: ERROR: syntax error at or near "created_at" Position: 132 -
您是否尝试使用不进行任何转换的查询('::date' 等)?你为什么要使用它??
-
@Cepr0 这是 postgres 的投射方式。我使用这个查询是因为它可以解决我的问题。
-
我也在使用 postgres 并且只对 jsonb 字段使用强制转换。那么您是否尝试从该查询中排除强制转换?
标签: spring postgresql spring-boot kotlin spring-data