neo4j java密码器参数不工作

neo4j java密码器参数不工作,neo4j,cypher,Neo4j,Cypher,我正在尝试在图形中创建一些虚拟节点: private final static Driver driver = GraphDatabase.driver("bolt://localhost:7687", AuthTokens.basic("neo4j", "password")); static Session session = driver.session(); String cypher = "CREATE " + "(:G

我正在尝试在图形中创建一些虚拟节点:

    private final static Driver driver = GraphDatabase.driver("bolt://localhost:7687",
        AuthTokens.basic("neo4j", "password"));
    static Session session = driver.session();

    String cypher = "CREATE "
            + "(:GPPocEntity {id:'{gppeid}',gppe_out_prop_1:'{gppe_out_prop_1_val_id}',"
            +                           "gppe_out_prop_2:'{gppe_out_prop_2_val_id}',"
            +                           "gppe_out_prop_X:'{gppe_out_prop_X_val_id}'})"
            + "-[:has]->"
            + "(:PPocEntity {id:'{ppeid}',ppe_out_prop_1:'{ppe_out_prop_1_val_id}',"
            +                           "ppe_out_prop_2:'{ppe_out_prop_2_val_id}',"
            +                           "ppe_out_prop_X:'{ppe_out_prop_X_val_id}'})"
            + "-[:contains]->"
            + "(:PocEntity {id:'{peid}',pe_out_prop_1:'{pe_out_prop_1_val_id}',"
            +                           "pe_out_prop_2:'{pe_out_prop_2_val_id}',"
            +                           "pe_out_prop_X:'{pe_out_prop_X_val_id}'})";

    Map<String, Object> params = new HashMap<String, Object>();
    int id = 1111;
    params.put("gppeid","gppe"+id);
    params.put("ppeid","ppe"+id);
    params.put("peid","pe"+id);
    params.put("gppe_out_prop_1_val_id","gppe_out_prop_1_val_"+id);
    params.put("gppe_out_prop_2_val_id","gppe_out_prop_2_val_"+id);
    params.put("gppe_out_prop_X_val_id","gppe_out_prop_X_val_"+id);
    params.put("ppe_out_prop_1_val_id","ppe_out_prop_1_val_"+id);
    params.put("ppe_out_prop_2_val_id","ppe_out_prop_2_val_"+id);
    params.put("ppe_out_prop_X_val_id","ppe_out_prop_X_val_"+id);
    params.put("pe_out_prop_1_val_id","pe_out_prop_1_val_"+id);
    params.put("pe_out_prop_2_val_id","pe_out_prop_2_val_"+id);
    params.put("pe_out_prop_X_val_id","pe_out_prop_X_val_"+id);

    session.run(cypher, params);
private final static Driver=GraphDatabase.Driver(“bolt://localhost:7687",
AuthTokens.basic(“neo4j”,“password”);
静态会话会话=driver.Session();
字符串cypher=“创建”
+(:gppoc实体{id:'{gppeid}',gppe_out_prop_1:'{gppe_out_prop_1_val_id},”
+“gppe_out_prop_2:{gppe_out_prop_2_val_id},”
+“gppe_out_prop_X:'{gppe_out_prop_X_val_id}})”
+“-[:has]->”
+“(:PPocEntity{id:'{ppeid}',ppe_out_prop_1:'{ppe_out_prop_1_val_id},”
+“ppe_out_prop_2:{ppe_out_prop_2_val_id}”
+“ppe_out_prop_X:{ppe_out_prop_X_val_id}}”
+“-[:包含]->”
+(:PocEntity{id:'{peid}',pe_out_prop_1:'{pe_out_prop_1_val_id},”
+“pe_out_prop_2:{pe_out_prop_2_val_id},”
+“pe_out_prop_X:{pe_out_prop_X_val_id}}”;
Map params=新的HashMap();
int id=1111;
参数put(“gppeid”、“gppe”+id);
参数put(“ppeid”、“ppe”+id);
参数put(“peid”、“pe”+id);
参数put(“gppe_out_prop_1_val_id”、“gppe_out_prop_1_val_id”+id);
参数put(“gppe_out_prop_2_val_id”、“gppe_out_prop_2_val_id”+id);
参数put(“gppe_out_prop_X_val_id”,“gppe_out_prop_X_val_”+id);
参数put(“ppe_out_prop_1_val_id”、“ppe_out_prop_1_val_”+id);
参数put(“ppe_out_prop_2_val_id”、“ppe_out_prop_2_val_”+id);
参数put(“ppe_out_prop_X_val_id”,“ppe_out_prop_X_val_”+id);
参数put(“pe_out_prop_1_val_id”、“pe_out_prop_1_val_”+id);
参数put(“pe_out_prop_2_val_id”、“pe_out_prop_2_val_”+id);
参数put(“pe_out_prop_X_val_id”、“pe_out_prop_X_val_”+id);
session.run(密码、参数);

但这并没有在cypher中设置这些参数。为什么会这样?

问题在于,您将密码查询中的参数用单引号括起来,这样它们就不会被解释。尝试通过删除单引号来更正查询:

String cypher = "CREATE "
        + "(:GPPocEntity {id:{gppeid}, gppe_out_prop_1: {gppe_out_prop_1_val_id},  "
        + "                            gppe_out_prop_2: {gppe_out_prop_2_val_id},  "
        + "                            gppe_out_prop_X: {gppe_out_prop_X_val_id}}) "
        + "-[:has]->"
        ...

密码参数是
$
+name,而不是
{
+name+
}
。 因此,对于名为
gppe\u out\u prop\u 1\u val\u id
的参数,您应该将
$gppe\u out\u prop\u 1\u val\u id
放入查询中

你不需要加引号,参数都是键入的,所以Neo4j会帮你做的