MongoDBとMongojackを初めて使用しています。既に終了しているドキュメントを更新しようとしています。テスト目的のために、私はボタンのクリックイベントである以下のコードを使用します。私の問題は、生成されたオブジェクトIDを持つドキュメントを初めて追加するときにボタンをクリックしたときですが、もう一度クリックすると、同じオブジェクトIDを持つ別のドキュメントが追加されます。私は毎回更新することで、このコレクションに1つのドキュメントだけを残すことを期待しています。Mongodbをmongojakで更新または挿入する - Java
私は@objectId
アノテーションを_id
フィールドに追加しましたが、以下のルートカースにエラーが表示されます。私がいる
任意の助け..
Modelクラス
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)
'jackson-databind' jarのバージョンは何ですか? – sidgate
実際に私は依存関係http://mongojack.org/installation.htmlを追加しました。 – user2486322