3

我需要获取由某个领域(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!

相同的延迟AscDesc方法名称。

在某处我读到正确的语法应该如下(注意后面的额外内容ByfindAll

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();everithing 这样的方法可以正常工作。

你有想法继续吗?

谢谢

4

1 回答 1

3

这可能有点晚了,但由于问题仍然存在,为了解决它,我只是使用了 findAll 方法,使用了一个 Sort 对象作为参数:

List<Item> findAll(Sort sort);

你称之为:

List<Item> items = this.itemRepository.findAll(new Sort(new Sort.Order(Sort.Direction.DESC, "name")));

您可以将“名称”属性提取为常量或使服务的 listItems 方法支持动态排序并将排序字段作为参数发送。

你也可以看看这篇文章: http: //maciejwalkowiak.pl/blog/2012/05/09/sorting-spring-data-mongodb-collections-using-orderby/

于 2015-11-05T12:45:53.297 回答