如何解决Spring Neo4j JPA 原生动态排序查询
我需要动态排序本机查询,我传递了 Pageable 对象,当我将 $skip 和 $limit 参数分配给本机查询时,skip 和 limit 属性工作正常。但是我不能使用 order by 语句,例如“ORDER BY m.title DESC”。我的实际查询比这更复杂,但我只是编写了实际查询的基础版本。
存储库
@Query(value = "MATCH (m:Movie) RETURN m SKIP $skip LIMIT $limit;",countQuery = "MATCH (m:Movie) RETURN count(m);")
Page<Movie> getMoviesBy(Pageable pageable);
服务
return repository.getMoviesBy(pageable);
控制器
@GetMapping("search")
public ResponseEntity search(@RequestParam(defaultValue = "0") Integer pageNo,@RequestParam(defaultValue = "10") Integer pageSize,@RequestParam Sort.Direction sortDirection,@RequestParam String sortBy
) {
return ResponseEntity.ok(movieService.search(PageRequest.of(pageNo,pageSize,Sort.by(sortDirection,sortBy))));
}
解决方法
我找到了解决方案。只需使用 SpEL。
https://docs.spring.io/spring-data/neo4j/docs/6.0.5/reference/html/#custom-queries.spel
,在函数服务和存储库中使用变量 sortBy how 参数,并使用该变量在本机查询中创建动态订单。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。