我希望将整个WHERE
子句作为REST参数并将其提供给PagingAndSortingRepository。春天有可能吗?我知道我可以用本机sql做这个,但我也想使用spring的分页功能。我认为QueryDsl对我不起作用,因为where子句是无限的,我必须在那种情况下解析所有参数。
要求:
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);
}
简而言之,我需要使用请求的filter
子句更改上述代码中的WHERE
参数。任何想法都将不胜感激。
谢谢..
答案 0 :(得分:1)
您还需要定义计数查询,如示例50所示。来自文档:
请注意,我们目前不支持对本机查询执行动态排序,因为我们必须操纵声明的实际查询,我们无法对本机SQL可靠地执行此操作。 但是,您可以通过自己指定计数查询来使用原生查询进行分页。
(强调我的)