我有一个使用Spring Data连接到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
,我的查询将没有问题。
我调试了一下org.springframework.data.util.TypeDiscoverer
,似乎Spring试图在Rawdata类中搜索一个名称$gte
确定其类型的字段。
任何帮助将不胜感激。
编辑:正如我提到的$gte
那样,在添加了聚合查询后,Spring似乎正在寻找我的Rawdata类中命名的属性。
到目前为止,我的代码可以正常工作,但对我来说似乎有些问题。
跟踪我认定错误后春一直在寻找我的DTO内命名的属性$gte
(它还将寻找$ge
,$lt
,$lte
)。在为这些属性添加字段并创建其getter和setter方法后,我的聚合查询操作正在运行。
我不知道我对MongoDB的Spring Data实现是否存在问题,或者API 1.8.0版本中存在问题,但是到目前为止,这是最好的解决方案。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句