我有一个简单的类叫做Signal。课程内容如下:
public class Signal {
private String id;
private Date timestamp;
public String getId() {
return id;
}
public void setId(String id) {
this.id = id;
}
public Date getTimestamp() {
return timestamp;
}
public void setTimestamp(Date timestamp) {
this.timestamp = timestamp;
}
}
我试图在MongoDB(v3.4)插入信号。我使用以下方法插入:
public boolean xyz(Signal signal) {
try {
DatabaseConnection databaseConnection =DatabaseConnection.getInstance();
MongoClient mongoClient = databaseConnection.getMongoClient();
MongoDatabase db = mongoClient.getDatabase("myDb");
MongoCollection<Signal> collection = db.getCollection("myCollection", Signal.class);
collection.insertOne(signal);
return true;
} catch (Exception e){
logger.error("Error", e);
return false;
}
}
我得到了以下例外:
org.bson.codecs.configuration.代码配置异常:找不到in.co.mysite.webapi.models.Signal类的编解码器。
我在这里检查了一个类似的问题,但是插入代码不同。我从回答中得到提示,修改了我的方法,但看起来不干净。修改方法如下:
public boolean xyz(Signal signal) {
try {
DatabaseConnection databaseConnection =DatabaseConnection.getInstance();
MongoClient mongoClient = databaseConnection.getMongoClient();
MongoDatabase db = mongoClient.getDatabase("myDb");
MongoCollection<Document> collection = db.getCollection("myCollection");
Document doc = new Document();
doc.put("id", signal.getId());
doc.put("timestamp", signal.getTimestamp());
doc.put("_id", new ObjectId().toString());
collection.insertOne(doc);
return true;
} catch (Exception e){
logger.error("Error", e);
return false;
}
}
您需要配置一个coderegistry
,它将管理从bson到POJO的转换:
MongoClientURI connectionString = new MongoClientURI("mongodb://localhost:27017");
MongoClient mongoClient = new MongoClient(connectionString);
CodecRegistry pojoCodecRegistry = org.bson.codecs.configuration.CodecRegistries.fromRegistries(MongoClientSettings.getDefaultCodecRegistry(), org.bson.codecs.configuration.CodecRegistries.fromProviders(PojoCodecProvider.builder().automatic(true).build()));
MongoDatabase database = mongoClient.getDatabase("testdb").withCodecRegistry(pojoCodecRegistry);
PS:您可以静态导入org。布森。编解码器。配置编解码器注册。来自注册处和组织。布森。编解码器。配置编解码器注册。来自提供者
。
一个完整的例子可以在github中找到
Mongodb java驱动程序文档还包含一篇关于管理POJO的文章(该链接适用于3.8.0驱动程序版本)。
我正在使用Cassandra-Driver-Core-3.0.0-1。
在我的系统(Ubuntu 10.04)中,java运行良好,但我无法运行javap命令,我有complile
我正在编写一个使用版本2.1.1的Spark应用程序。下面的代码在调用带有LocalDate参数的方法时出错了? 更新:我将的返回类型更改为元组,并将的lambda中的代码更改为 现在错误更改为
应用程序启动失败 说明: 中的方法的参数0需要一个无法找到的类型的bean。 措施: 考虑在配置中定义类型为的bean。 拾取的JAVA\u工具选项:-agentlib:jvmhook 拾取的JAVA\u选项:-Xbootclasspath/a:“C:\Program Files(x86)\HPE\Unified Functional Testing\bin\JAVA\u shared\class