findOne 方法不能使用两个数据源(MySQL 和 MongoDB)编译

Posted

技术标签:

【中文标题】findOne 方法不能使用两个数据源(MySQL 和 MongoDB)编译【英文标题】:findOne method doesn't compile with two data sources (MySQL and MongoDB) 【发布时间】:2019-04-02 23:44:06 【问题描述】:

我有一个 Spring boot (1.5.6) 应用程序,其中包含一个单独的模块,其中包含将信息持久保存在 mysql 数据库中的所有逻辑,到目前为止,一切正常。但是,在 MongoDB 中持久化一些文档(json)有一个新的要求,我添加了对 Spring boot 的 build.gradle 文件的依赖:

编译“org.springframework.boot:spring-boot-starter-data-mongodb”

并且,在单独的模块中,这些依赖项:

编译'org.mongodb:mongo-java-driver:3.8.2' 编译'org.springframework.data:spring-data-mongodb:2.1.2.RELEASE'

当我尝试构建我的项目时,从扩展 CrudRepository (MySQL) 的类中的所有 findOne 方法都会发生一个常见异常:

错误:找不到符号 findOne

即使没有实现任何 MongoRepository。

关于这个错误的任何想法/建议? 非常感谢。

【问题讨论】:

见***.com/questions/36613270/… 你正在混合不同的 Spring Data 版本,不要那样做。您正在使用与 Spring Boot 1.5.x 支持的版本不兼容的 Spring Data Mongo 版本。 【参考方案1】:

我最好的猜测是你不小心将 spring-data 版本升级到了一个更新的版本,这对Repository 接口添加了一些重大更改。

findOne 方法被重构为Optional<T> findById(ID primaryKey);。您可以通过验证天气来检查是否是这种情况,抱怨findOne 方法的存储库公开了findById 方法。另一种检查方法是查看依赖关系树。

来源:spring-data-JPA

【讨论】:

【参考方案2】:

非常感谢大家。事实上,问题在于不兼容的库的混合。我添加了正确的版本,一切正常:)

【讨论】:

以上是关于findOne 方法不能使用两个数据源(MySQL 和 MongoDB)编译的主要内容,如果未能解决你的问题,请参考以下文章

从另一个 findOne 函数中的 findOne mongoose 获取数据

如何使用 findOne 查询 mongodb 并排除数组中的一些嵌套字段

MongoDB常用基本操作

《MongoDB入门教程》第07篇 CRUD之查找文档

《MongoDB入门教程》第07篇 CRUD之查找文档

《MongoDB入门教程》第07篇 CRUD之查找文档