代码之家  ›  专栏  ›  技术社区  ›  xmlParser

在Java中如何传递NeN4J中动态生成的属性名称和值列表?

  •  0
  • xmlParser  · 技术社区  · 6 年前

    我使用的是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函数需要偶数个参数。现在,我不知道该怎么做。很明显, 映射对象本身也将动态生成(我刚刚使用了一个简化的示例)。

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

    0 回复  |  直到 6 年前
        1
  •  2
  •   Bambus    6 年前

    您希望将map参数直接传入run方法(作为第二个参数),而不是依赖于neo4j的values接口。不需要将map对象强制转换为values对象。

        2
  •  0
  •   user96279    6 年前

    我不知道neo4j,但create在jdbc中使用executeupdate,而不是executequery,因为这是一个db写操作。查询是一个数据库读取操作。