【问题标题】:Neo4j - unable to craete a relationship using cypher in javaNeo4j - 无法在 java 中使用密码创建关系
【发布时间】:2015-10-19 12:34:38
【问题描述】:

我在创建关系时未能通过 java 执行密码查询。它不会引发任何错误,但不会创建任何关系。尝试使用其他密码查询返回一个完美返回的节点。但无法找出未创建关系的原因。

这是我的代码:

public static void addrelation(String node1, String node2, int cocr) {
        try (Transaction tx = graphdb.beginTx();
                Result result = graphdb.execute("MATCH(a{word:\"" + node1
                        + "\"}),(b{word:\"" + node2 + "\"})"
                        + "CREATE a-[r:coocr{val:" + cocr + "}]->(b)"
                        + "CREATE a<-[s:coocr{val:" + cocr + "}]-(b)"
                        + "RETURN r,s")) {
                }
            } 

【问题讨论】:

标签: neo4j neo4j-java-api


【解决方案1】:

添加 tx.success() 行对数据库进行了更改。

    public static void addrelation(String node1, String node2, int cocr) {
            try (Transaction tx = graphdb.beginTx();
                    Result result = graphdb.execute("MATCH(a{word:\"" + node1
                            + "\"}),(b{word:\"" + node2 + "\"})"
                            + "CREATE a-[r:coocr{val:" + cocr + "}]->(b)"
                            + "CREATE a<-[s:coocr{val:" + cocr + "}]-(b)"
                            + "RETURN r,s")) {

   //Adding this line resolved the issue.                 
                           tx.success();

                    }
                } 

【讨论】:

    【解决方案2】:

    您的MATCH 是否匹配任何内容?如果不是,它将不会创建关系并将成功返回。也许删除两个CREATERETURN a, b 行来查看。

    【讨论】:

    • 是的,Match 与这两个词匹配。相同的查询在没有 java 的情况下运行良好。
    • 当我返回 a,b 而不是这样的关系时匹配返回两个节点 {b=Node[183]​​, a=Node[221]} @Brain Underwood
    • 也许你需要提交你的事务。 Java 不是我的强项,抱歉 ;)
    • 是的,提交了我的事务并且更改受到影响。谢谢@Brain Underwood
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-06-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多