【问题标题】:Do MERGE query in java neo4j在 java neo4j 中做 MERGE 查询
【发布时间】:2015-10-01 23:23:56
【问题描述】:

我有用户 1 和 7,我想合并他们之间的关系朋友。密码查询工作正常,但是当我尝试用 java 编写它时它不起作用

如何使用 java 进行密码查询:

         MATCH (a:user), (b:user)
         WHERE a.ID="1" AND b.ID="7"
         Merge (a)-[:friend]->(b)
         return a, b

我试过了,但是没用

     Result result = db.execute( "MERGE (a:user {ID:'7'})-[:friend]->(b:user {ID:'5'}) return a.ID,b.ID") )

我也试过了

 Result result = db.execute(MATCH (a:user), (b:user) WHERE a.ID='1' AND b.ID='7' Merge (a)-[: friend]->(b) return a, b)

两者都不工作

【问题讨论】:

  • 您好,请在您的问题中添加所有相关信息:Java 代码 sn-p、异常、有关您尝试实现的目标的详细信息。

标签: java neo4j


【解决方案1】:

您有几个 Java 语法错误。

  1. 第一条语句末尾有一个额外的)。它还需要以分号结尾。
  2. seconds 语句需要将 Cypher 查询用双引号括起来(成为合法的 Java 字符串)。它还需要以分号结尾。

【讨论】:

  • 我试过了,但它不起作用,这是完整的代码:
  • try ( 忽略事务 = db.beginTx(); 结果结果 = db.execute( "MERGE (a:user {ID:'7'})-[:friend]->(b:用户 {ID:'5'}) 返回 a.ID,b.ID") )
  • try 语句需要一个代码块 ({ ...})。有关一些示例代码,请参阅 this pageHere 是一个完整的例子。
  • "MATCH (a:user {ID:'1'}),(b:user {ID:'5'}) MERGE (a)-[:friend]->(b) 返回甲,乙”。我试过了,但它也不起作用
【解决方案2】:

这里是完整的代码 sn-p 应该适用于您的情况:

try (Transaction tx = db.beginTx()) {
    // Query, with params
    String query = "MATCH (a:user {ID: {aId}}), (b:user {ID: {bId}}) " +
         "MERGE (a)-[:friend]->(b) " +
         "RETURN a, b";

    // Params
    Map<String, Object> params = new HashMap<>();
    params.put("aId", 1);
    params.put("bId", 7);

    // Execute in try-with-resource, to ensure that result will be closed
    try (Result result = db.execute(query, params)) {
        // read result here
    }

    tx.success();
}

这里值得注意的事情:

  • 事务在 try-with-resource 块中执行
  • 查询正在使用参数 - {aId}{bId}
  • 参数以Map 的形式传递给数据库
  • try-with-resource 块中执行查询 ix,以确保资源将被关闭

您可能应该查看Using Neo4j from Java 开发人员资源,以获取有关该主题的更多示例和信息。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-09-04
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多