zoukankan      html  css  js  c++  java
  • 解决Spring中使用Example无法查询到Mongodb中的数据问题

    1 问题描述

    Spring Boot中使用Mongodb中的Example查询数据时查询不到,示例代码如下:

    ExampleMatcher matcher = ExampleMatcher.matching()
    .withMatcher("username", ExampleMatcher.GenericPropertyMatchers.exact())
    .withIgnorePaths("id","password");
    

    2 问题分析

    Spring Data中使用Mongodb时,插入数据会添加一个_class字段,这个字段是用来映射POJO的,也就是说,如果一个实体类如下:

    @Document(collection = "user")
    class User{
    	@Id
    	private String id;
    	private String username;
    	private String password;
    }
    

    则存进数据库的字段如下:

    _id,_class,username,password
    

    而使用ExampleMatcher,默认情况下会匹配所有字段,因此,如果实体类的包名改变了,_class字段就不会匹配,这样就无法正确地得到查询结果。

    3 解决方案

    _class添加进IgnorePath即可:

    .withIgnorePaths("_class","id","password")
    

    如果不想在插入数据时自动添加_class字段,可以修改MongoTemplate或者MappingMongoConverter,由于此超出本文范围,仅给出参考链接,戳这里这里

  • 相关阅读:
    Pymsql
    MySQL基础操/下
    MySQL基础操作
    前端学习之jquery/下
    前端学习之jquery
    Python之异常处理
    Python之模块和包导入
    Python之模块
    Python之面向对象上下文管理协议
    Python之面向对象slots与迭代器协议
  • 原文地址:https://www.cnblogs.com/6b7b5fc3/p/14120890.html
Copyright © 2011-2022 走看看