我是 MongoDB 和 Mongojack 的新手,如果文档已经退出,我正在尝试更新文档,或者插入新文档。出于测试目的,我使用以下代码,即按钮单击事件。我的问题是,当我第一次单击该按钮时,它会添加一个具有生成对象 ID 的文档,但是当我再次单击时,它会添加另一个具有相同对象 ID 的文档。我希望通过每次更新,在这个集合中只保留一个文档。
谷歌搜索后,我在该字段中添加了@objectId
注释_id
,但在下面的 root couse 中给了我一个错误;
任何帮助..
模型类
public class Transport implements StockLoadable {
// @ObjectId
private String _id;
private String info;
public String getInfo() {
return info;
}
public void setInfo(String info) {
this.info = info;
}
public String get_id() {
return _id;
}
public void set_id(String _id) {
this._id = _id;
}
@Override
public String toString() {
return "Vehicle";
}
@Override
public void setStock(Stock stock) {
// TODO Auto-generated method stub
}
@Override
public Stock getStock() {
// TODO Auto-generated method stub
return null;
}
}
按钮点击事件
Transport transport;
btn.addClickListener(o->{
if(transport==null){
transport= new Transport();
transport.setInfo("Info");
}
try (MongoClient mongoClient = new MongoClient("localhost",27017)) {
DB db = mongoClient.getDB("transport");
DBCollection table = db.getCollection("test");
JacksonDBCollection<Transport, String> collection = JacksonDBCollection.wrap(table, Transport.class, String.class);
WriteResult<Transport, String> result = collection.save(transport);
System.out.println(result.getSavedId());
transport= collection.findOne(DBQuery.is("_id",result.getSavedId()));
} catch (Exception e) {
e.printStackTrace();
}
});
添加注释后我遇到的根异常
Caused by: java.lang.NoSuchMethodError: com.fasterxml.jackson.databind.introspect.Annotated.getType()Lcom/fasterxml/jackson/databind/JavaType;
at org.mongojack.internal.MongoAnnotationIntrospector.findDeserializer(MongoAnnotationIntrospector.java:86)
at com.fasterxml.jackson.databind.introspect.AnnotationIntrospectorPair.findDeserializer(AnnotationIntrospectorPair.java:515)
at com.fasterxml.jackson.databind.deser.BasicDeserializerFactory.findDeserializerFromAnnotation(BasicDeserializerFactory.java:1648)
at com.fasterxml.jackson.databind.deser.BeanDeserializerFactory.constructSettableProperty(BeanDeserializerFactory.java:721)
at com.fasterxml.jackson.databind.deser.BeanDeserializerFactory.addBeanProps(BeanDeserializerFactory.java:498)