mongotemplate-mongoTemplate 查询结果,按子文档中的一个字段排序,要怎么实现?

问题描述

mongoTemplate 查询结果,按子文档中的一个字段排序,要怎么实现?
要查询的mongo数据:

 {_id"" : ***_class"" : ""***""downloadCount"" : {china"" : 20google"" : 10    }}{_id"" : ***_class"" : ""***""downloadCount"" : {china"" : 10google"" : 5    }}{_id"" : ***_class"" : ""***""downloadCount"" : {china"" : 15google"" : 2    }}

查询:

  Query query = new Query();    query.with(new Sort(Direction.DESCdownloadCount.china""));    mongoTemplate.find(query this.getEntityClass());

错误信息:

 java.lang.IllegalAccessError: org/springframework/beans/PropertyMatches    at org.springframework.data.mapping.PropertyReferenceException.detectPotentialMatches(PropertyReferenceException.java:134)    at org.springframework.data.mapping.PropertyReferenceException.<init>(PropertyReferenceException.java:59)    at org.springframework.data.mapping.PropertyPath.<init>(PropertyPath.java:75)    at org.springframework.data.mapping.PropertyPath.create(PropertyPath.java:327)    at org.springframework.data.mapping.PropertyPath.create(PropertyPath.java:307)    at org.springframework.data.mapping.PropertyPath.create(PropertyPath.java:291)    at org.springframework.data.mapping.PropertyPath.from(PropertyPath.java:273)    at org.springframework.data.mongodb.core.convert.QueryMapper$MetadataBackedField.getPath(QueryMapper.java:837)    at org.springframework.data.mongodb.core.convert.QueryMapper$MetadataBackedField.<init>(QueryMapper.java:729)

查询子文档也是不可以,报相同的错误!!!!
query.addCriteria(Criteria.where(""downloadCount.china"").is(10));

只有单层的查询和排序是可以正常的,但是我用mongo语句就是可以正常查询和排序的。

跪求大神帮助!!!

解决方案

解决了,原因是我的实体类中downloadCount是用JSONObject表示的,但我的查询是用的downloadCount.china,这样就导致spring找不到映射字段china,从而报错。

修改方法:将downloadCount写成内部类,china和google是其中的字段,如此就可以使用downloadCount.china查询或者排序了。

总结:spring-data-mongo 太TMD的不是东西了,就不能好好地对原生支持么XXX!

解决方案二:
http://www.zhihu.com/question/20291363

时间: 2024-08-04 10:56:38

mongotemplate-mongoTemplate 查询结果,按子文档中的一个字段排序,要怎么实现?的相关文章

Word文档中表格怎么进行排序

  Word文档中表格怎么进行排序          1.将光标置于表格中的任意单元格中,在"开始"选项卡的"段落"选项组中,单击[排序]按钮,如图1所示. 图1 单击[排序]按钮 2.在"排序"对话框的"主要关键字"区域中,将"主要关键字"设置为某个目标列的名称,此处为包含数字的"销量"列,并在"类型"下拉列表框中选择"数字",选中"升

在word文档中画一个公章

  在word文档中画一个公章 1.在视图--工具拦--绘图选中"椭圆"工具,在按下"Shift"键的同时拖开鼠标,就可以得到一个正圆了. 2.在"颜色与线条"标签中,填充颜色选"无填充颜色",线条颜色设为红色,选3磅粗的单线形. 3.公章的文字用艺术字来制作. 填充颜色和线条颜色都用红色,并设成无阴影. 4.公章中间还有一个红五星. 用"自选图形"的星形就可以做出来了,填充颜色和线条颜色用红色. 5.然后

ssh开发中,如何把表中的一个字段的值相同的记录统计数量,并在jsp页面显示?

问题描述 ssh开发中,如何把表中的一个字段的值相同的记录统计数量,并在jsp页面显示? 解决方案 用group分组后统计,sql:select 字段名称 count(*) AS 记录数 from A group by 字段名称; 解决方案二: sql语句 : select sum(case 字段名 when 特定值 then 1 else 0 end) from 表名:希望可以帮到你! 解决方案三: select count(*) from 表 where 字段 =?然后在和其它查询结合在一起

sql语句-如何用SQL语句实现两张表(无关联)查询后,分别将各自的一个字段,插入一个新表。

问题描述 如何用SQL语句实现两张表(无关联)查询后,分别将各自的一个字段,插入一个新表. 有A.B.C三张表如下, 表 A 表B 学生ID(主键) 学生名称 课程ID(主键)| 课程名称 表 C 学生ID 课程ID (联合主键) 那么,通过SQL语句操作如何用学生姓名和课程名(只能获取学生姓名和课程名)将课程ID和学生ID插入到C表(C表中有课程ID和学生ID并且是联合主键),感激不尽. 解决方案 你可以定义2个变量,分别从表A表B用名称查询到ID.在表C的新增语句中使用这2个变量. 不过你这

hibernate-Oracle数据库中新增一个字段,Hibernate中映射怎样加?

问题描述 Oracle数据库中新增一个字段,Hibernate中映射怎样加? 问题:我在oracle数据库中新增一个字段,那么在Hibernate映射中,需要手动加进去吗?在中. 谢谢!! 解决方案 类似这样,第一个name对应实体中,第二个name对应数据库 解决方案二:

获取字符串中某一个字段的数据,GetValueFromStr;拓展字符串解析parse_string

gps数据格式为:$GPRMC,024813.640,A,3158.4608,N,11848.3737,E,10.05,324.27,150706,,,A* /********************************************************************** *版权所有 (C)2015, Wuyq. * *文件名称: GetValueFromStr.c *内容摘要:用于演示从gps数据字符串中获取相应的内容 *其它说明:无 *当前版本: V1.0 *作

代码-如何修改数据库中某一个字段的名称

问题描述 如何修改数据库中某一个字段的名称 我是新手 不会用在c#的wpf里 用代码修改 有没有大神给个代码 解决方案 修改数据库里字段的名称,和c#无关,需要用sql来实现 修改列名 ALTER TABLE TABLE_NAME RENAME COLUMN OLD_COLUMN_NAME TO NEW_COLUMN_NAME; 解决方案二: 修改字段就是用sql语句 sqlserver中有sp_rename存储过程http://www.cnblogs.com/ringnet/archive/2

js-如何将一组值添加到数据库中的一个字段下 ,

问题描述 如何将一组值添加到数据库中的一个字段下 , 如何将通过条件得到的一组值插入到数据库中的一个字段下,使这个字段下有多个值 解决方案 具体点啊??看不太懂问题..举个例子啊.. 解决方案二: insert into 考生表 (考号) select 考号 from 生成的考号组 解决方案三: 添加一条语句 insert into 考生表 (考号字段) value(生成的考号)

java中输出一个日期排序,输出格式怎么变成Date@2c905b34类似的了。。请大神指点

问题描述 java中输出一个日期排序,输出格式怎么变成Date@2c905b34类似的了..请大神指点 java中输出一个日期排序,输出格式怎么变成Date@2c905b34. Date@3953c9c7类似的格式了..请大神指点 : Date[] days = new Date[5]; days[0] = new Date(2012123); days[1] = new Date(201515); days[2] = new Date(2008123); days[3] = new Date(