2

I'm having a duplicate query when performing a simple query. The files:

SomeClass.java:

@Document(collection = "someCollection")
public class SomeClass {

    private String _id;
    private String someField;

    //...
}

SomeClassRepository.java:

@Repository
public interface SomeClassRepository extends MongoRepository<SomeClass, String> {
}

Service.java:

@Autowired
private SomeClassRepository someClassRepository;

public SomeClass find(String id){
    return someClassRepository.findOne(id);
}

application.properties:

logging.level.org.springframework.data.mongodb.core.MongoTemplate=DEBUG

Log file:

14:14:46.514 [qtp1658534033-19] DEBUG o.s.data.mongodb.core.MongoTemplate - findOne using query: { "_id" : "40c23743-afdb-45ca-9231-c467f8e8b320"} fields: null for class: class com.somepackage.SomeClass in collection: someCollection
14:14:46.534 [qtp1658534033-19] DEBUG o.s.data.mongodb.core.MongoTemplate - findOne using query: { "_id" : "40c23743-afdb-45ca-9231-c467f8e8b320"} in db.collection: someDatabase.someCollection

I also tried to:

1) use @Id annotation with a field named "someId" 2) use @Id annotation with a field named "id" 3) use a field named "id" (without @Id annotation)

Unfortunately, I always have two queries to the database.

Anyone knows how to perform a single query?

Thanks!

italktothewind
  • 1,950
  • 2
  • 28
  • 55

1 Answers1

3

Its only single query that is sent to database. Your log messages are coming from two different places.

First place : doFindOne method - link; Second place : FindOneCallback class - link

You can also confirm the logs by looking at db logs. More info here

s7vr
  • 73,656
  • 11
  • 106
  • 127