【发布时间】:2018-07-08 23:28:04
【问题描述】:
这个例子运行良好。
@Query("select t from TimeTable t where MONTH(t.date) = ?1 and YEAR(t.date) = ?2")
List<TimeTable> findAll(Integer month, Integer year);
现在我尝试将 ?1 和 ?2 替换为如下名称
@Query("select t from TimeTable t where MONTH(t.date) =month and YEAR(t.date) =:year")
List<TimeTable> findAll(Integer month, Integer year);
这个不起作用并产生错误:
org.springframework.dao.InvalidDataAccessApiUsageException: 参数 那个位置 [1] 不存在;嵌套异常是 java.lang.IllegalArgumentException:具有该位置的参数 [1] 不存在
还有这个
@Query("select t from TimeTable t where MONTH(t.date) =:month and YEAR(t.date) =:year")
List<TimeTable> findAll(Integer month, Integer year);
产生错误:
org.springframework.dao.InvalidDataAccessApiUsageException:名称为 参数绑定不能为空或空!在 JDK
更新:
就像上面的错误说我不需要在 JDK 8 上使用 @Param,但使用 @Param 的解决方案有效:
List<TimeTable> findAll(@Param("month") Integer month, @Param("year") Integer year);
当我删除 @Params 时,它再次出现此错误。
【问题讨论】:
-
YEAR(t.date) =:ear")拼写错误? -
good eye krezus(我在帖子中拼错了,在代码中一切都很好)
标签: java spring jpa spring-data-jpa jpql