java - 如何在 Neo4j for java 中传递动态生成的属性名称和值列表?

标签 java neo4j

我正在使用 Java 的 Neo4j 驱动程序,它允许您运行带参数的查询。我有一个动态生成的字符串列表,用作查询, 每个查询都有不同的参数。查询字符串的示例包括:

"CREATE (a:Person {id:{id}, name:{name}})"

"CREATE (a:Person {id:{id}, name:{name}}, age:{age}})"

"CREATE (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();
}

不起作用,因为参数函数需要偶数个参数。现在,我不确定如何实际进行。显然, map 对象本身也将动态生成(我刚刚使用了一个简化的示例)。

任何帮助/提示将不胜感激!

最佳答案

您希望将 Map 参数直接传递到 run 方法中(作为第二个参数),而不是依赖 Neo4j 的 Values 接口(interface)。无需将 Map 对象转换为 Values 对象。

关于java - 如何在 Neo4j for java 中传递动态生成的属性名称和值列表?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54690766/

相关文章:

python - 使用 Python 在 Neo4j 中为其属性创建多个节点

java - While 循环 While 字符串不等于多个其他字符串 (Java)

java - 使用 Maven 创建一个包含用于 JNLP 的 jar-with-dependencies.jar 的 .war 文件

javascript - 为 Cordova 插件重新设计非单例 Java 类?

Java - JFormattedTextField 不允许首次尝试输入

javascript - 如何在 Neo4J Node.Js 驱动程序中打开/关闭驱动程序和 session ?

java - Java 原生序列化的替代品

neo4j - WebSocket 连接失败。由于您的网络浏览器的安全限制

json - 如何以 GraphJSON 格式而不是树格式返回 Neo4j OGM 实体以进行可视化?

scala - ! java.lang.NoSuchMethodError : scala. Predef$.$conforms()Lscala/Predef$$less$colon$less;