解决JPA中使用@Query注解无法使用limit分页函数__南国

项目中有使用到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

解决JPA中使用@Query注解无法使用limit分页函数__南国_第1张图片

经过百度发现,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

你可能感兴趣的:(Mysql,Java)