Search code examples
mongodbspring-bootspring-data-mongodb

MongoDB - FindById is not working and giving null


I am using Spring Boot(V2.2.2.RELEASE) + Spring Data Mongo Example. In this example, I've records like below

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

My Repository

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

Code

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

Even below code not working

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

Solution

  • Seems there might be two issues

    1. ObjectId should be used
    employeeRepository.findById(new ObjectId("5cb825e566135255e0bf38a4")) 
    
    1. ID field goes with underscore
    new Query(Criteria.where("_id").is(new ObjectId("5cb825e566135255e0bf38a4")))
    

    I'm not a Java guy, so might miss smth, but at least give it a try :)