首页 > 解决方案 > MongoDB - FindById 不起作用并给出 null

问题描述

我正在使用 Spring Boot(V2.2.2.RELEASE) + Spring Data Mongo 示例。在这个例子中,我有如下记录

{
    "_id" : ObjectId("5cb825e566135255e0bf38a4"),
    "firstName" : "John",
    "lastName": "Doe"
}

我的仓库

@Repository
public interface EmployeeRepository extends CrudRepository<Employee, ObjectId>{
    Employee findById(String id);
}

代码

Employee findById = employeeRepository.findById("5cb825e566135255e0bf38a4");
System.out.println(findById);

即使下面的代码不起作用

Query query = new Query(Criteria.where("id").is(new ObjectId("5cb825e566135255e0bf38a4")));
List<Employee> find = mongoTemplate.find(query, Employee.class);

标签: mongodbspring-bootspring-data-mongodb

解决方案


好像有两个问题

  1. 应该使用 ObjectId
employeeRepository.findById(new ObjectId("5cb825e566135255e0bf38a4")) 
  1. ID 字段带有下划线
new Query(Criteria.where("_id").is(new ObjectId("5cb825e566135255e0bf38a4")))

我不是 Java 人,所以可能会错过,但至少试一试 :)


推荐阅读