未绑定命名参数:Spring Boot 中的 DATE_FORMAT 本机查询

Kri*_*hna 6 java mysql spring-data-jpa spring-boot

我正在尝试使用 Spring Boot 中的 MySQL 本机查询在 dateFrom 和当前日期之间使用选择查询来获取表数据作为列表。而MySQL数据库字段数据类型是String。

以下是存储库中的查询:

@Query(value = "select * from Account where DATETIMESTAMP >= :dateFrom  AND DATETIMESTAMP < :DATE_FORMAT(curdate(), '%d/%m/%Y')", nativeQuery = true)
List<Account> findByDate(@Param("dateFrom") String dateFrom);
Run Code Online (Sandbox Code Playgroud)

在 Spring Boot 中上述查询出现以下错误:

 Named parameter not bound : DATE_FORMAT; nested exception is org.hibernate.QueryException: Named parameter not bound : DATE_FORMAT
Run Code Online (Sandbox Code Playgroud)

任何人都可以帮我构建相同的查询吗?

Shr*_*hna 5

如果您正在使用 JPQL 并且仍然收到此错误,那么您可能在中间有一个空格,例如

where id = : myId
Run Code Online (Sandbox Code Playgroud)

应该

where id = :myId
Run Code Online (Sandbox Code Playgroud)


Sha*_*rup 4

:从 中删除:DATE_FORMAT(curdate(), '%d/%m/%Y'). :用于绑定jpa查询中的参数。:前面的加法DATE_FORMAT使它JPA认为它是一个参数。所以最终的查询应该是

@Query(value = "select * from Account where DATETIMESTAMP >= :dateFrom  AND DATETIMESTAMP < DATE_FORMAT(curdate(), '%d/%m/%Y')", nativeQuery = true)
List<Account> findByDate(@Param("dateFrom") String dateFrom);
Run Code Online (Sandbox Code Playgroud)