我使用的是Neo4J Java驱动程序,它允许您使用参数运行查询。我有一个动态生成的字符串列表作为查询,
每个查询都有不同的参数。查询字符串的示例包括:
创建(a:person{id:{id},name:{name})
创建(a:person{id:{id},name:{name},age:{age})
创建(a:person{id:{id},age:{age})
对于这些查询中的每一个,我都需要传递具有适当值的不同参数,以便节点插入正常工作。
下面给出了我要做的事情的代码片段:
try (Transaction tx = session.beginTransaction()) {
String queryStr = "CREATE (a:Person {id:{id}, name:{name}})";
tx.run(query, Values.parameters("id", "testId", "name", "testName"));
}
这段代码适用于非动态生成的属性键值对。在本例中,我已经对
查询字符串(通常,事务将在循环中运行,每个查询字符串将从列表中读取)。现在,当试图通过
参数,我只能使用上面的语法。
例如,语法:
try (Transaction tx = session.beginTransaction()) {
String queryStr = "CREATE (a:Person {id:{id}, name:{name}})";
Map<String, String> parameterKeyValueMap = new HashMap<String, String>();
parameterKeyValueMap.put("id", "id");
parameterKeyValueMap.put("name", "testName");
tx.run(query, Values.parameters(parameterKeyValueMap));
tx.success();
}
不起作用,因为parameters函数需要偶数个参数。现在,我不知道该怎么做。很明显,
映射对象本身也将动态生成(我刚刚使用了一个简化的示例)。
任何帮助/提示都将不胜感激!