项目中有使用到Spring Data JPA来做查询,在某个查询中,想用limit函数分页,如下:
@Transactional
@Query(value = "select a.id ,a.even,a.createat,a.iot,a.reada from alarm a where a.adminid=:userId ORDER BY a.createat DESC Limit :num,10")
List<Alarm> findByUserId(@Param("userId") int userId, @Param("num") int num);
这里的Limit报错了,红色XX
经过百度发现,Spring Data JPA写的SQL叫JPQL,不是SQL不支持Limit函数。
解决如下:
在注解内增加参数nativeQuery,当加入nativeQuery参数时,@Query内的SQL是按原生SQL写法来写,limit函数生效,不加入nativeQuery参数则是JPQL,limit函数不生效。
@Transactional
@Query(nativeQuery = true, value = "select a.id ,a.even,a.createat,a.iot,a.reada from alarm a where a.adminid=:userId ORDER BY a.createat DESC Limit :num,10")
List<Alarm> findByUserId(@Param("userId") int userId, @Param("num") int num);
正常了,可以运行了
随手记录下一个小坑,NNNNNNN