【问题标题】:Dynamic native Sql queries for pagination in Spring DataSpring Data中分页的动态原生Sql查询
【发布时间】:2017-05-04 14:51:30
【问题描述】:

我想获取整个 WHEREclause 作为 REST 参数并将其提供给 PagingAndSortingRepository。春天可以吗?我知道我可以使用本机 sql 来做到这一点,但我也想使用 spring 的分页功能。我认为 QueryDsl 对我不起作用,因为 where 子句简直是无限的,在这种情况下我必须解析所有参数。

Ex 请求:

localhost:8080/users?page=0&size=5&where=(firstname+eq+john+and+lastname+neq+terry)or(email+eq+john@gmail.com)

我希望它是这样的:

interface UserDAO extends PagingAndSortingRepository<User, Integer> {   

@Query(value = "SELECT * FROM User ?2", 
        countQuery = "SELECT count(*) FROM User ?2", 
        nativeQuery = true)
List<User> getUserList(Pageable pageable, String filter);  
}        

简而言之,我需要用请求的WHERE 子句更改上述代码中的filter 参数。任何想法都将不胜感激。

谢谢..

【问题讨论】:

标签: java sql spring spring-mvc spring-data


【解决方案1】:

您还需要定义计数查询,如示例 50. 所示。来自文档:

请注意,我们目前不支持对原生查询执行动态排序,因为我们必须操作声明的实际查询,而对于原生 SQL,我们无法可靠地执行此操作。 但是,您可以通过自己指定计数查询来使用本机查询进行分页。

(强调我的)

【讨论】:

  • 实际上我这样做了,但也没有用。让我编辑问题。
  • 好的,我现在明白了,但这不适用于存储库。您需要自己构建整个查询。
  • 那么,我想我需要自己实现它。但无论如何,我无法使可分页的本机查询工作。所以如果有人这样做,它仍然是很好的信息。
猜你喜欢
  • 2020-01-11
  • 2017-05-13
  • 1970-01-01
  • 1970-01-01
  • 2019-02-20
  • 2020-02-15
  • 2015-01-27
  • 1970-01-01
  • 2019-12-01
相关资源
最近更新 更多