Spring Data JPA中的按日期顺序描述限制
我试图通过使用限制查询来限制查询结果。超出限制,查询按预期运行。
@Query("SELECT a FROM DrmAdpodTimeSlot a where a.startTime > :startTime order by a.startTime desc") public List<DrmAdpodTimeSlot> findByStartTime(@Param("startTime") Timestamp startTime);
但是,当我尝试通过使用限制(记录数)来限制记录时,如下所示,
@Query("SELECT a FROM DrmAdpodTimeSlot a where a.startTime > :startTime order by a.startTime desc limit 2") public List<DrmAdpodTimeSlot> findByStartTime(@Param("startTime") Timestamp startTime);
从上面的查询中,我收到以下错误,
Caused by: org.hibernate.hql.internal.ast.QuerySyntaxException: unexpected token: limit near line 1, column 110 [SELECT a FROM com.dooreme.domain.DrmAdpodTimeSlot a where a.startTime > :startTime order by a.startTime desc limit 2]
如何在Spring Data JPA查询中使用按限额查询定单?
回答:
您不能向Query
注释添加分页支持。HQL/JPQL
使用Spring Data
JPA时,无需在其中添加排序和分页功能。使用Pageable
作为第二个参数,而不是像如下:
@Query("SELECT a FROM DrmAdpodTimeSlot a where a.startTime > :startTime")public List<DrmAdpodTimeSlot> findByStartTime(@Param("startTime") Timestamp startTime, Pageable pageable);
Pageable
封装了排序和分页功能,如spring data jpa doc所述:
将
Pageable
实例添加到查询方法,以将分页动态添加到静态定义的查询。APage
知道可用元素和页面的总数。它是通过基础结构触发来计算
来实现的。由于根据所用商店的不同,这可能会很昂贵,因此
Slice
可以将其用作退货。一个人Slice
知道Slice
一个更大的结果集时,是否有一个下一个可用的步行空间就足够了。
因此,您可以使用以下任一方法:
@Query("SELECT a FROM DrmAdpodTimeSlot a where a.startTime > :startTime")public Page<DrmAdpodTimeSlot> findByStartTime(@Param("startTime") Timestamp startTime, Pageable pageable);
要么:
@Query("SELECT a FROM DrmAdpodTimeSlot a where a.startTime > :startTime")public Slice<DrmAdpodTimeSlot> findByStartTime(@Param("startTime") Timestamp startTime, Pageable pageable);
也:
排序选项也通过Pageable实例处理。
以上是 Spring Data JPA中的按日期顺序描述限制 的全部内容, 来源链接: utcz.com/qa/431275.html