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

    技术2022-07-13  90

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

    Processed: 0.013, SQL: 9