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().params(db.util().serialize(params)).writeCollections(collectionName, "users2");
不再需要您的解决方法。 TransactionOptions
中缺少 map/list/array 的自动序列化是 java-driver 中的一个错误,已在 4.1.5
版中修复
我需要在为 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().params(db.util().serialize(params)).writeCollections(collectionName, "users2");
不再需要您的解决方法。 TransactionOptions
中缺少 map/list/array 的自动序列化是 java-driver 中的一个错误,已在 4.1.5