通过 Criteria API 添加原始查询参数

Adding raw query parameters via Criteria API

我找不到这个问题的答案。我发现以前的类似问题没有答案。我想使用 Spring data solr 进行查询。但是 @Query 不足以满足我的需求。据我了解,无论您在此处提供什么,都会成为 solr 的“select”处理程序的 q 参数。

在我的例子中,我需要添加更多参数,例如 sfield 用于空间搜索。如果 @Query 不会削减它,我准备通过自动装配 SolrTemplate 编写自定义存储库实现,但是 Criteria API 似乎不允许我添加原始查询参数要么。

任何 help/points 将不胜感激。

我通过创建一个 QueryParser 装饰器来解决这个问题,该装饰器将所需的参数添加到已解析的 solr 查询中。 QueryParser 是使用 solrTemplate.registerQueryParser() 注册的。

但是请注意,我不得不做一个非常讨厌的 hack 才能让它工作,因为发送到 solrTemplate.queryForPage 的所有查询都被 QueryBase 中受保护的内部 class 静态包包装。所以我上面的注册码必须在一个包里 org.springframework.data.solr.core