【问题标题】:MongoDB with Spring data - Duplicated query from driver带有 Spring 数据的 MongoDB - 来自驱动程序的重复查询
【发布时间】:2018-08-30 23:19:52
【问题描述】:

我在执行简单查询时遇到重复查询。文件:

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

日志文件:

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

我也尝试过:

1) 将@Id 注释与名为“someId”的字段一起使用 2) 将@Id 注释与名为“id”的字段一起使用 3) 使用名为“id”的字段(不带@Id 注释)

不幸的是,我总是对数据库进行两次查询。

有人知道如何执行单个查询吗?

谢谢!

【问题讨论】:

    标签: mongodb spring-data spring-data-mongodb


    【解决方案1】:

    它唯一发送到数据库的单个查询。您的日志消息来自两个不同的地方。

    第一名:doFindOne方法-link;第二个地方 : FindOneCallback类-link

    您还可以通过查看数据库日志来确认日志。更多信息here

    【讨论】:

      猜你喜欢
      • 2016-02-11
      • 2012-03-04
      • 2021-02-09
      • 1970-01-01
      • 2021-06-09
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-12-18
      相关资源
      最近更新 更多