【问题标题】:neo4j java cypher parameters not workingneo4j java密码参数不起作用
【发布时间】:2018-09-04 07:55:15
【问题描述】:

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

    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);

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

【问题讨论】:

    标签: neo4j cypher


    【解决方案1】:

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

    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]->"
            ...
    

    【讨论】:

      【解决方案2】:

      密码参数是$ + name,而不是{ + name + }。 因此,对于名为gppe_out_prop_1_val_id 的参数,您应该将$gppe_out_prop_1_val_id 放入您的查询中。

      而且您不需要在周围加上引号,输入参数,所以 Neo4j 会为您完成。

      【讨论】:

        猜你喜欢
        • 2016-12-20
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2017-11-13
        相关资源
        最近更新 更多