我有以下 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 ':'
。你知道我该如何解决这个问题吗?
我认为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 结束, 可分页 (可分页);