簡體   English   中英

ArangoDB Java驅動程序:將多個參數放入事務中

[英]ArangoDB Java Driver: put multiple parameters in transaction

我需要在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);
}

不再需要您的解決方法。 TransactionOptions缺少的映射/列表/數組自動序列化是Java驅動程序中的一個錯誤,該錯誤已在版本4.1.5中修復

不得不序列化地圖:

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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM