Mongo的morphia读取Map<String, List<Object>>类型数据的问题
来源:互联网 发布:手机看电影软件排行 编辑:程序博客网 时间:2024/06/05 02:55
最近一直使用morphia,给mongo数据查询带来很多遍历,但是最近项目遇到了一个严重的问题,在从Mongo数据库中查询Map<String, List<Object>>字段时,针对value值为空list时(即[ ]),竟然读到数据的严重问题,具体描述如下:
1.Entity数据结构:
import org.mongodb.morphia.annotations.Embedded;import org.mongodb.morphia.annotations.Property;import java.util.List;import java.util.Map;/** * Created by zhangzh on 2017/6/14. */public class MyEntity { @Property("id") private String id; @Property("name") private String name; @Property("description") private String description; @Embedded private Map<String, List<SubEntity>> mySubEntity; public static class SubEntity { @Property("subName") private String subName; @Property("subDescription") private String subDescription; }}
2.数据在mongo数据库中的存储格式:
{ "_id" : ObjectId("5940b1643db71d944c800445"), "name" : "myEntity name test", "description" : "myEntity description test", "MapEntity" : { "entity1" : [ { "name" : "lance","description":"lance-description" } ],"entity2" : [] }}
3.读取数据库中数据的代码:
import org.bson.types.ObjectId;import org.mongodb.morphia.Datastore;import org.mongodb.morphia.query.Query;/** * Created by zhangzh on 2017/6/14. */public class MyEntityDao { private Datastore datastore; public MyEntity getMyEntityById(String Id) { Query<MyEntity> query = datastore.createQuery(MyEntity.class); query.criteria("_id").equal(new ObjectId(Id)); return query.get(); }}
4. 读取结果:
{ "_id" : ObjectId("5940b1643db71d944c800445"), "name" : "myEntity name test", "description" : "myEntity description test", "MapEntity" : { "entity1" : [ { "name" : "lance","description":"lance-description" } ],"entity2" : [ { "name" : "lance", "description":"lance-description" } ] }}
5.结果分析:
5.1 数据库中保存的"entity2" : 为空[ ] ,而使用morphia获取到的Entity为
"entity2" : [ { "name" : "lance", "description":"lance-description" } ]和entity1 相等,MyEntityDao获取的值错误,会给业务带来严重的问题。
5.2 当"entity2"值不是[ ]时,能够获取到正确的结果。
6.解决方式:
将MyEntity数据保存到Mongo数据库中时,禁止Map<String, List<SubEntity>> mySubEntity的map中的key为[ ]的数据保存到数据库中。
阅读全文
0 0
- Mongo的morphia读取Map<String, List<Object>>类型数据的问题
- Android中将List<Map<String, Object>>类型数据与字符串的相互转化
- List<Map<String, String>> 合并map的字段数据问题
- 对于数据封装在List<Map<String,Object>>的排重问题
- List<Map<String, Object>>的循环
- List<Map<String,Object>> 的快速排序
- list<map<String ,object>>的使用
- List<Map<String,Object>> 的快速排序
- freemarker 读取 map 数据 <object,string>
- Android保存List<Map<String,Object>>数据到SD卡及读取
- 行专列,拆分json,实现数据的展示。Map<String, Object>存储多个相同的key,List<Map<String, Object>>
- List<Map<String, Object>>
- List<Map<String, Object>>
- List<Map<String, Object>>
- 当需要对一个list<Map<String,Object>>中的map添加一个相同的数据是可以参考
- List<Map<String,Object>几种遍历的方法
- List<Map<String,Object>>和二维数组的转化
- list中根据map<String,Object>的某个值排序
- 常成员const
- 微信公众号开发-输入城市查询天气
- java---发送邮件功能
- (115)注释
- python在windows下使用pip安装wordcloud模块失败
- Mongo的morphia读取Map<String, List<Object>>类型数据的问题
- spring 注入方式和自动装配介绍
- Volley框架下json不显示中文的问题
- 词法分析
- Javascript 简单的Tab切换实现
- 对移动测试领域来说,精准测试是否重要
- Echarts2竖直datazoom滑动后显示数据不全的解决方法
- spring boot 配置ssl证书实现https
- 修改和删除用户角色+查看角色信息+修改角色+删除角色