Pageable 不能为 null 在 Spring Data-Solr 中使用组功能时抛出异常
Posted
技术标签:
【中文标题】Pageable 不能为 null 在 Spring Data-Solr 中使用组功能时抛出异常【英文标题】:Pageable must not be null Exception thrown when using group functionality in Spring Data-Solr 【发布时间】:2019-10-16 15:19:27 【问题描述】:使用 springboot data-solr 和 SolrTemplate 的文档示例通过查询创建组时,我收到结果但没有分组信息。查看示例代码时:
Field field = new SimpleField("popularity");
Function func = ExistsFunction.exists("description");
Query query = new SimpleQuery("inStock:true");
SimpleQuery groupQuery = new SimpleQuery(new SimpleStringCriteria("*:*"));
GroupOptions groupOptions = new GroupOptions()
.addGroupByField(field)
.addGroupByFunction(func)
.addGroupByQuery(query);
groupQuery.setGroupOptions(groupOptions);
GroupPage<Product> page = solrTemplate.queryForGroupPage("collection-1", query, Product.class);
GroupResult<Product> fieldGroup = page.getGroupResult(field);
GroupResult<Product> funcGroup = page.getGroupResult(func);
GroupResult<Product> queryGroup = page.getGroupResult(query);
似乎创建了一个组查询,但是对 queryForGroupPage 的调用没有使用它,这可以解释为什么我没有收到任何分组信息。如果我改为将 groupQuery 对象传递给调用,那么我会收到“页面不能为空”错误。
我已经测试了其他查询类型并且没有出现这个错误,所以它似乎只是影响了我的这个功能。我曾尝试使用较旧的 springboot 版本和较旧的 Solr 版本,将两者匹配,并且会发生同样的问题。
我在设置方面没有任何其他 Solr 问题,所以不要认为我的配置中缺少任何内容。
以下是错误堆栈跟踪的 sn-p。
11:15:14,323 错误 [stderr](默认任务 1)java.lang.IllegalArgumentException:Pageable 不能为空! 11:15:14,325 错误 [stderr](默认任务 1)在 org.springframework.util.Assert.notNull(Assert.java:198) 11:15:14,326 错误 [stderr](默认任务 1)在 org.springframework.data.domain.Chunk.(Chunk.java:54) 11:15:14,327 错误 [stderr](默认任务 1)在 org.springframework.data.domain.PageImpl.(PageImpl.java:46) org.springframework.data.solr.core.ResultHelper.convertGroupQueryResponseToGroupResultMap(ResultHelper.java:306) 的 11:15:14,328 错误 [stderr](默认任务 1) org.springframework.data.solr.core.SolrTemplate.createSolrResultPage(SolrTemplate.java:448) 的 11:15:14,329 错误 [stderr](默认任务 1) 11:15:14,330 org.springframework.data.solr.core.SolrTemplate.doQueryForPage(SolrTemplate.java:305) 处的错误 [stderr](默认任务 1) 11:15:14,330 org.springframework.data.solr.core.SolrTemplate.queryForGroupPage(SolrTemplate.java:357) 处的错误 [stderr](默认任务 1) 11:15:14,331 org.springframework.data.solr.core.SolrTemplate.queryForGroupPage(SolrTemplate.java:346) 处的错误 [stderr](默认任务 1) ...
有人看过按功能分组的工作示例吗?我也搜索了任何东西,但在官方文档的示例代码之外找不到参考。
谢谢,enter code here
【问题讨论】:
嘿,你找到解决这个问题的方法了吗?另外,我也有同样的问题。 @DarrenP 同样的问题。你能找出问题所在吗? 【参考方案1】:我想我解决了这个问题。您应该设置 GroupOptions 限制。示例代码如下。
GroupOptions groupOptions = new GroupOptions()
.addGroupByField(field)
.addGroupByFunction(func)
.addGroupByQuery(query)
.setLimit(1000);
groupQuery.setGroupOptions(groupOptions);
我也遇到了同样的问题,通过这样做解决了。
【讨论】:
以上是关于Pageable 不能为 null 在 Spring Data-Solr 中使用组功能时抛出异常的主要内容,如果未能解决你的问题,请参考以下文章
JPA findAll Pageable Request Total Count Group By Column
Junit mockito 测试Controller层方法有Pageable异常
SwiftUI:如何在 Pageable 中访问 ObservedObject?