MongoDB - FindById 不起作用并给出 null

PAA*_*PAA 1 mongodb spring-data-mongodb spring-boot

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

{
    "_id" : ObjectId("5cb825e566135255e0bf38a4"),
    "firstName" : "John",
    "lastName": "Doe"
}
Run Code Online (Sandbox Code Playgroud)

我的存储库

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

代码

Employee findById = employeeRepository.findById("5cb825e566135255e0bf38a4");
System.out.println(findById);
Run Code Online (Sandbox Code Playgroud)

即使下面的代码也不起作用

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

ras*_*had 5

似乎可能有两个问题

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

我不是 Java 人员,所以可能会错过一些东西,但至少尝试一下:)

  • 我发现“@Id private String id”被标记为“@Field”的错误,因此产生了一个问题。 (5认同)