gpt4 book ai didi

spring - 类 [org.jongo.bson.RelaxedLazyDBObject] 的对象必须是类 com.mongodb.BasicDBObject 的实例

转载 作者:行者123 更新时间:2023-11-28 20:28:57 24 4
gpt4 key购买 nike

我正在尝试使用 Spring Boot 和 Mongo Embedded(JHipster、Flapdoodle)设置测试。一般来说它有效。我可以在 Robomongo 中看到带有创建的测试集合和对象的数据库(使用 Mongobee 进行迁移)。

但是当我想访问 Clients 集合时:


List clients = clientRepository.findAll();
它抛出:

java.lang.IllegalArgumentException: Given DBObject must be a BasicDBObject! Object of class [org.jongo.bson.RelaxedLazyDBObject] must be an instance of class com.mongodb.BasicDBObject

当我使用真正的 Mongo 实例运行应用程序时:./mvnw -Pdev即使测试和开发配置使用相同的 Mongobee 振动,也没有错误。

Spring 文档非常简洁: http://docs.spring.io/spring-boot/docs/current-SNAPSHOT/reference/htmlsingle/#boot-features-mongo-embedded

我的测试配置文件application.yml是:


spring:
mongodb:
embedded:
version: 3.2.1
data:
mongodb:
host: localhost
port: 27117
database: mydb-test
我使用 Mongo(真实实例)版本 v3.2.7,在配置中我设置的 Embedded Mongo 的最高可能版本是 3.2.1,这可能是个问题?也许有人可以与示例工作测试分享他的配置?

最佳答案

我找到了解决方案。

问题是我在@ChangeSet 中使用了 org.jongo.Jongo 而不是 JHipster 默认的 com.mongodb.Db

由于某些原因,Jongo 不能很好地与嵌入式 Mongo 配合使用。当我切换到 Db 时,所有问题都消失了。

不工作:

@ChangeSet(...)
public void someChange(Jongo jongo) throws IOException {

org.jongo.MongoCollection collection = jongo.getCollection("collection");
DBObject basicDBObject = new BasicDBObject();
collection.insert(basicDBObject);

...
}

工作:

@ChangeSet(...)
public void someChange(Db db) throws IOException {

com.mongodb.MongoCollection collection = db.getCollection("collection");
DBObject basicDBObject = new BasicDBObject();
collection.insert(basicDBObject);
...
}

关于spring - 类 [org.jongo.bson.RelaxedLazyDBObject] 的对象必须是类 com.mongodb.BasicDBObject 的实例,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38368872/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com