最新在写一个项目,遇到一个问题是根据时间查找最新
想说这个涉及到了根据表中地段进行排序,然后选出最高的几个于是
@Query(value = "From Course order by createTime limit 3")
List<Course> getNewCourse();
相信大家看到这里就发现错误了,因为hql里面不支持limit于是我想说改用Pageable
service层
Pageable pageable = new PageRequest(0, 3);
return courseDAO.getNewCourses();
dao层
@Query(value = "From Course order by createTime" )
Page<Course> getNewCourse(Pageable pageable);
结果就是运行出错因为Pageable和原生hql语句不可以一起存在
最后正确答案是这个样子的
dao层
@Query(nativeQuery=true,value = "select * from Course order by create_time asc limit 3")
List<Course> getNewCourses();
因为hql语句实在是存在了很大的约束,于是我改用了原生sql语句,加上nativeQuery=true就可以了
最后想提醒大家一下,这个返回的是list集合而不是page
新手练习,欢迎大家指正