gpt4 book ai didi

mongodb - 使用 Spring Data 将 DBObject 插入 MongoDB

转载 作者:行者123 更新时间:2023-12-02 04:45:35 28 4
gpt4 key购买 nike

我尝试使用 Spring Data 将以下 DBObject 插入 MongoDB:

    BasicDBObject document = new BasicDBObject();
document.put("country", "us");
document.put("city", "NY");
mongoTemplate.insert(document);

其中 mongoTemplate 是我的 Spring 模板 (org.springframework.data.mongodb.core.MongoTemplate)。

执行时,我得到:

Caused by: org.springframework.dao.InvalidDataAccessApiUsageException: No Persitent Entity information found for the class com.mongodb.BasicDBObject
at org.springframework.data.mongodb.core.MongoTemplate.determineCollectionName(MongoTemplate.java:1747)
at org.springframework.data.mongodb.core.MongoTemplate.determineEntityCollectionName(MongoTemplate.java:1732)
at org.springframework.data.mongodb.core.MongoTemplate.insert(MongoTemplate.java:658)

我的 JSON 最终将是动态的。那么知道如何动态提供这些实体信息吗?或者还有其他方法通过 Spring Data 将原始 JSON 插入 Mongodb 吗?

最佳答案

您将 spring-data 与使用 java 驱动程序的正常 mongo 持久性混淆了。

如果您想使用 java 驱动程序直接将数据保存到 mongoDB,那么您将使用如您所示的 BasicDBObject,只不过您不会使用 mongoTemaplate 类来保存,而是使用 MongoClient 类。所以它看起来像这样:

MongoClient mongoClient = new MongoClient( "localhost" , 27017 );
DB db = mongoClient.getDB( "mydb" );
BasicDBObject o = new BasicDBObject();
o.set......
coll.insert(o);

但是,如果您尝试使用 spring-data 持久保存文档,那么您需要创建一个 java 类来表示您的文档(例如:Person)并使用 @Document(collection="person") 注释该类,然后使用 mongoTemplate (这是一个 spring-data 特定类来持久化此实体。这与使用 JPA/hibernate 非常相似。

所以它看起来像这样

@Document(collection="person")
public class Person {
private String fisrtName;
....

Relevant getters and setters

}

然后就是坚持

Person p = new Person();
p.setFirstName("foo");
p.setLastName("bar");
....
mongoTemplate.save(p);

关于mongodb - 使用 Spring Data 将 DBObject 插入 MongoDB,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20421491/

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