Spring MongoDB 的数据 - gt、gte、lt、lte 运算符的聚合错误

Spring Data For MongoDB - Error in Aggregation for gt, gte, lt, lte operators

我有一个项目使用 Spring 数据连接到 MongoDB 数据库(版本 1.8.0),目前我正在尝试创建一个聚合查询,但是当我使用任何时它失败了以下运算符中的一个:gt、gte、lt、lte

我的聚合查询如下所示:

TypedAggregation<Rawdata> aggregation = newAggregation(Rawdata.class,
    match(Criteria.where("value").gte(value)),
    group("genotypeName","genotypeId","value"),
    sort(Sort.Direction.ASC, "value"),
    limit(total)
);
AggregationResults<Rawdata> result = mongoTemplate.aggregate(aggregation, Rawdata.class);

当我 运行 它时,我得到以下异常:

org.springframework.web.util.NestedServletException: Handler processing failed; nested exception is java.lang.IllegalAccessError: org/springframework/beans/PropertyMatches
org.springframework.web.servlet.DispatcherServlet.triggerAfterCompletionWithError(DispatcherServlet.java:1287)
org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:961)
org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:877)
org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:966)
org.springframework.web.servlet.FrameworkServlet.doGet(FrameworkServlet.java:857)
javax.servlet.http.HttpServlet.service(HttpServlet.java:620)
org.springframework.web.servlet.FrameworkServlet.service(FrameworkServlet.java:842)
javax.servlet.http.HttpServlet.service(HttpServlet.java:727)
org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:52)

我确定问题出在 gte 运算符中,因为如果我将其替换为 is,我的查询 运行s 没有问题。

我调试到 org.springframework.data.util.TypeDiscoverer,似乎 Spring 正在尝试在我的 Rawdata class 中搜索一个名为 $gte 的字段以确定其类型。

任何帮助将不胜感激。

编辑: 正如我提到的,Spring 似乎在我的 Rawdata class 中寻找名为 $gte 的 属性 ], 添加此 属性 后,我的聚合查询有效。

到目前为止,我的代码可以正常工作,但在我看来好像出了点问题。

跟踪错误后,我发现 Spring 在我的 DTO 中查找名为 $gte 的 属性(它还会查找 $ge$lt , $lte).在为这些属性添加字段并创建其 getter 和 setter 方法后,我的聚合查询操作正在运行。

我不知道我对 MongoDB 的 Spring 数据的实现是否有问题,或者 API 的 1.8.0 版本有问题,但是到目前为止,这是最好的解决方案。