【发布时间】:2021-09-23 07:50:56
【问题描述】:
我正在尝试在 spring-data 2.5.0 和 PostgreSQL 数据库上使用带有原生 SQL 和可分页的 spring 数据。
@Query(value = "SELECT dense_rank() OVER (ORDER BY rank DESC)," +
"t.id, " +
"FROM table t WHERE t.x > 0 ",
nativeQuery = true)
Page<Object[]> getT(Pageable pageable);
但是我得到了一个 SQLException。结果 SQL 是
SELECT dense_rank() OVER (ORDER BY rank DESC),t.id FROM table t WHERE t.x > 0 , t.y desc limit 20
在其清晰可见的错误之处,spring-data 不会将 ORDER BY 子句添加到 SQL 中,可能是因为 dense_rank() 存在 ORDER BY 子句。如果我删除那个密集的选择,一切都会正常。
有没有可能使用 spring-data 来实现这个用例?也许一些可能的解决方法?我想使用整个 Pageable 对象(所以页面大小、偏移量和排序)
【问题讨论】:
-
而不是 Page
-
@AjayKumar 感谢您的回复,但事实并非如此,并没有解决问题
标签: sql spring postgresql spring-data