微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

Spring Neo4j JPA 原生动态排序查询

如何解决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 举报,一经查实,本站将立刻删除。