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.DrmAd

podTimeSlot 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实例添加到查询方法,以将分页动态添加到静态定义的查询。A Page知道可用元素和页面的总数。它是通过基础结构触发

来计算

来实现的。由于根据所用商店的不同,这可能会很昂贵,因此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

回到顶部