Mahesha999
Mahesha999

Reputation: 24871

neo4j java cypher parameters not working

I am trying to create some dummy nodes in graph:

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

But this does not set those parameters in cypher. Why is this so?

Upvotes: 0

Views: 337

Answers (2)

logisima
logisima

Reputation: 7478

A cypher parameter is $ + name, not { + name + }. So for parameter called gppe_out_prop_1_val_id, you should put $gppe_out_prop_1_val_id into your query.

And you don't need to put quotes around, paramters are typed, so Neo4j will do it for you.

Upvotes: 0

stdob--
stdob--

Reputation: 29167

The problem is that you wrap the parameters in the cypher-query in single quotes, so they are not interpreted. Try to correct the query by removing single quotes:

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

Upvotes: 1

Related Questions