ElasticSearch 和 SpringData:FindAll 和 OrderBy
ElasticSearch and SpringData: FindAll and OrderBy
我需要获取所有文档,按特定字段排序(parent
在我的例子中)。
在我的 ItemRepository
中,我添加了以下签名:
public List<Item> findAllOrderByParent();
但是通过调用它,我得到了一个
org.springframework.web.util.NestedServletException: Request processing failed;
nested exception is
org.springframework.data.repository.query.ParameterOutOfBoundsException:
Invalid parameter index! You seem to have declare too little query method parameters!
同样推迟Asc
或Desc
到方法名。
我在某处读到正确的语法应该如下(注意 findAll
之后的额外 By
):
public List<Item> findAllByOrderByParent();
我得到一个
NullPointerException
Caused by:
java.lang.NullPointerException
at org.springframework.data.elasticsearch.core.ElasticsearchTemplate.count(ElasticsearchTemplate.java:333)
at org.springframework.data.elasticsearch.repository.query.ElasticsearchPartQuery.execute(ElasticsearchPartQuery.java:54)
...
我排除了其他问题,因为声明像 public List<Item> findByNameOrderByParent();
这样的方法一切正常。
您有继续的想法吗?
谢谢
这可能有点晚了,但由于问题仍然存在,为了解决这个问题,我只是使用了 findAll 方法,使用 Sort 对象作为参数:
List<Item> findAll(Sort sort);
你称它为:
List<Item> items = this.itemRepository.findAll(new Sort(new Sort.Order(Sort.Direction.DESC, "name")));
"name"属性您可以将其提取为常量或使您的服务的 listItems 方法支持动态排序并将排序字段作为参数发送。
你也可以看看这篇文章:http://maciejwalkowiak.pl/blog/2012/05/09/sorting-spring-data-mongodb-collections-using-orderby/
我需要获取所有文档,按特定字段排序(parent
在我的例子中)。
在我的 ItemRepository
中,我添加了以下签名:
public List<Item> findAllOrderByParent();
但是通过调用它,我得到了一个
org.springframework.web.util.NestedServletException: Request processing failed;
nested exception is
org.springframework.data.repository.query.ParameterOutOfBoundsException:
Invalid parameter index! You seem to have declare too little query method parameters!
同样推迟Asc
或Desc
到方法名。
我在某处读到正确的语法应该如下(注意 findAll
之后的额外 By
):
public List<Item> findAllByOrderByParent();
我得到一个
NullPointerException
Caused by:
java.lang.NullPointerException
at org.springframework.data.elasticsearch.core.ElasticsearchTemplate.count(ElasticsearchTemplate.java:333)
at org.springframework.data.elasticsearch.repository.query.ElasticsearchPartQuery.execute(ElasticsearchPartQuery.java:54)
...
我排除了其他问题,因为声明像 public List<Item> findByNameOrderByParent();
这样的方法一切正常。
您有继续的想法吗?
谢谢
这可能有点晚了,但由于问题仍然存在,为了解决这个问题,我只是使用了 findAll 方法,使用 Sort 对象作为参数:
List<Item> findAll(Sort sort);
你称它为:
List<Item> items = this.itemRepository.findAll(new Sort(new Sort.Order(Sort.Direction.DESC, "name")));
"name"属性您可以将其提取为常量或使您的服务的 listItems 方法支持动态排序并将排序字段作为参数发送。
你也可以看看这篇文章:http://maciejwalkowiak.pl/blog/2012/05/09/sorting-spring-data-mongodb-collections-using-orderby/