JPA @Query ERROR. token : WHERE

Posted hanjun0612

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了JPA @Query ERROR. token : WHERE相关的知识,希望对你有一定的参考价值。

在使用中,发现了一个JPA的bug。

错误:ERROR. token : WHERE

 

我在Dao层,使用@Query时,使用了jpa的Pageable分页。

@Query(value = "select * from Order where refSONo=:refSONo and IsValid = 1 /*#pageable*/", nativeQuery = true)
    Page<Order> findPagedList(@Param("refSONo") String refSONo, Pageable pageable);

 

当执行时,会出现2个sql语句。

1 select * from Order where refSONo=:refSONo and IsValid = 1 外加page分页 

2 会查询总数  select count(where) from Order where refSONo=:refSONo and IsValid = 1

 

但是很奇怪,查询总数时使用了count(where),导致报错:ERROR. token : WHERE

这应该是JPA正则匹配的一个Bug。

 

解决方案:where 换行

@Query(value = "select * from Order "+
" where refSONo=:refSONo and IsValid = 1 /*#pageable*/", nativeQuery = true)
    Page<Order> findPagedList(@Param("refSONo") String refSONo, Pageable pageable);

 

总结:通过换行产生的 可以正确的引导正则匹配。

 

以上是关于JPA @Query ERROR. token : WHERE的主要内容,如果未能解决你的问题,请参考以下文章

jpa query注解 in函数怎么用

小程序生成URL Link,获取query参数

春季数据 jpa @query 和可分页

使用JPA中@Query 注解实现update 操作

Spring data jpa中Query和@Query分别返回map结果集

spring-data-jpa @Query 支持正则表达式语法吗?