首页 > 解决方案 > `org.bson.codecs.configuration.CodecConfigurationException` 从 vertx 写入 MongoDB

问题描述

我有一个Connection扩展的公共课程JsonObject。要存储Connection对象,我有以下静态方法:

  public static Future<Void> storeConnection(MongoClient mc, Connection cnx) {
    Future<Void> fut = Future.future();
    mc.save("coll", cnx, ar -> {
        if(ar.succeeded()) {
          fut.complete();
        }
        else {
          fut.fail(ar.cause());
        }
      });
    return fut;
  }

打电话时mc.save("coll", cnx, ar -> {...})我得到了异常org.bson.codecs.configuration.CodecConfigurationException。我尝试了一些(显然没用的)事情,比如将签名更改cnx为 a JsonObject,转换cnx为 aJsonObject甚至创建一个JsonObject toJsonObject() { return (JsonObject)this; }方法。我得到了同样的例外。

然而,当我替换mc.save("coll", cnx, ar -> {...})为 时mc.save("coll", new JsonObject().put("foo", "bar"), ar -> {...}),写作成功。

我无法弄清楚我做错了什么。

更新:我通过组合改变了继承:

public class Connection {
  private JsonObject data;
  ...
  // and then 
 public JsonObject jsonObject() { return data; }
  ...
}

然后mc.save("coll", cnx.jsonObject(), ar -> { ... });不再抱怨。

然而,我不明白继承案有什么问题。

标签: vert.xmongodb-java

解决方案


推荐阅读