【问题标题】:ArangoDB Java Driver: put multiple parameters in transactionArangoDB Java Driver:在事务中放置多个参数
【发布时间】:2016-12-20 09:46:29
【问题描述】:

我需要在为 ArangoDB 驱动的 JAVA 事务中放入多个参数;

它适用于单个参数:

public String save(User user) throws ArangoDBException {

    TransactionOptions options = new TransactionOptions().params(user).writeCollections(collectionName);
    String action = "function (params) { "
            + "var db = require('internal').db; "
            + "var doc = params;"
            + "db.users.save(doc);"
            + "}";

    return db.transaction(action, String.class, options);
}

但是如果我需要传递多个参数,那我就卡住了。试过传map、arraylist或者array,但是好像不行:

public void save(User user, User user2) throws ArangoDBException {
    Map<String, Object> parameters = new MapBuilder()
            .put("user", user)
            .put("user2" user2)
            .get();


    TransactionOptions options = new TransactionOptions().params(parameters).writeCollections(collectionName);
    String action = "function (params) { "
            + "var db = require('internal').db; "
            + "var doc = params['user'];"
            + "var doc2 = params['user2'];"
            + "db.users.save(doc);"
            + "db.users.save(doc2);"
            + "}";

    db.transaction(action, String.class, options);
}

【问题讨论】:

    标签: java arangodb


    【解决方案1】:

    不再需要您的解决方法。 TransactionOptions 中缺少 map/list/array 的自动序列化是 java-driver 中的一个错误,已在 4.1.5 版中修复

    【讨论】:

      【解决方案2】:

      不得不序列化地图:

      TransactionOptions().params(db.util().serialize(params)).writeCollections(collectionName, "users2");
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2023-03-22
        • 2017-04-04
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多