<expression>预期,得到':'

问题描述 投票:0回答:1

我有以下 Oracle SQL 查询:

SELECT user FROM global_users user WHERE user.status = 'ACTIVE'
AND user.description IS NOT NULL AND user.updatedGoodsDate BETWEEN '2024-03-10 20:09:53' AND '2024-03-10 20:09:53'
AND ROWNUM <= 13

我尝试使用 Spring Data JPA 将查询编辑到 Postgres 中:

@Query("SELECT user FROM global_users user WHERE user.status = :status
AND user.description IS NOT NULL AND user.updatedGoodsDate BETWEEN :startDate AND :endDate
AND LIMIT :count")
List<Users> findTopUsers(@Param("status") TransactionStatus status,
  @Param("startDate") OffsetDateTime start, @Param("endDate") OffsetDateTime end, @Param("count") long count);

但是对于

LIMIT :count
我得到了
<expression> expected, got ':'
。你知道我该如何解决这个问题吗?

spring postgresql spring-boot spring-data-jpa
1个回答
0
投票

我认为JPA不支持为LIMIT添加参数。

您应该能够使用 Pageable 来限制您的结果集,如本答案所示:JPA 限制功能

在你的情况下,这看起来像:

@Query("从 global_users 用户中选择用户,其中 user.status = :status AND user.description IS NOT NULL AND user.updatedGoodsDate BETWEEN :startDate AND :endDate)

列出 findTopUsers(@Param("status") TransactionStatus 状态, @Param("startDate") OffsetDateTime 开始, @Param("endDate") OffsetDateTime 结束, 可分页 (可分页);

© www.soinside.com 2019 - 2024. All rights reserved.