当前位置: 首页 > 面试题库 >

Spring Data JPA中的按日期顺序描述限制

伏业
2023-03-14
问题内容

我试图通过使用限制查询来限制查询结果。超出限制,查询按预期运行。

@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实例处理。



 类似资料:
  • 我正在尝试使用限制查询来限制查询结果。在没有限制的情况下,查询按预期工作。 但当我尝试使用limit(记录数)来限制记录时,如下所示:, 从上面的查询中,我得到了以下错误, 如何在spring data jpa查询中使用order by limit查询?

  • 问题内容: 我有一个要按日期在Angular.js中排序的数组: 列表不正确。我认为日期格式是原因吗? 日期格式为: 问题答案: 为了正常工作,您需要使用控制器中的对象包装字符串日期。 例如:

  • 我在我的活动主题文件: 我正在尝试按Desc对产品进行排序,但产品仍然默认排序(ASC)。 如何按描述对它们进行排序?

  • 请帮助根据顶部数字/分数排序字符串(顺便说一句,根据我们的教练,我们不能使用arrays.sort) } 示例输入是这样的 我想要的输出是这样的 但是发生的是: 请帮忙,我想要一个简单的解释。非常感谢。

  • 我在Cassandra中创建了一个表,用于监控应用程序的插入。我的分区键是一个int,由年月日组成,我的集群键是一个时间戳,之后是我的用户名和其他一些字段。 我想显示最后5个插入,但似乎分区键位于“order by desc”之前。 怎样才能得到正确的结果?正常的聚类键归纳顺序,为什么我会得到这个结果?(提前致谢) 信息: 结果: 通缉:< br > 我的表:

  • 当使用了大量虚拟主机,而且每个主机又使用了不同的日志文件时,Apache可能会遭遇文件描述符(有时也称为文件句柄)耗尽的困境。Apache使用的文件描述符总数如下:每个不同的错误日志文件一个、每个其他日志文件指令一个、再加10-20个作为内部使用。Unix操作系统限制了每个进程可以使用的文件描述符数量。典型上限是64个,但可以进行扩充,直至到达一个很大的硬件限制为止(hard-limit)。 尽管