Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/398.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在JavaNeo4j中进行合并查询_Java_Neo4j - Fatal编程技术网

在JavaNeo4j中进行合并查询

在JavaNeo4j中进行合并查询,java,neo4j,Java,Neo4j,我有用户1和7,我想在他们之间合并一个关系朋友。cypher查询工作正常,但当我试图用java编写它时,它不起作用 Result result = db.execute( "MERGE (a:user {ID:'7'})-[:friend]->(b:user {ID:'5'}) return a.ID,b.ID") ) 如何使用java执行此密码查询: MATCH (a:user), (b:user) WHERE a.ID="1" AND b

我有用户1和7,我想在他们之间合并一个关系朋友。cypher查询工作正常,但当我试图用java编写它时,它不起作用

     Result result = db.execute( "MERGE (a:user {ID:'7'})-[:friend]->(b:user {ID:'5'}) return a.ID,b.ID") )
如何使用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语法错误

     Result result = db.execute( "MERGE (a:user {ID:'7'})-[:friend]->(b:user {ID:'5'}) return a.ID,b.ID") )
  • 第一条语句末尾有一个额外的
    。它还需要以分号结尾
  • seconds语句需要将Cypher查询用双引号括起来(成为合法的Java字符串)。它还需要以分号结尾

  • 以下是适用于您的案例的完整代码段:

    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(事务tx=db.beginTx()){
    //查询,带参数
    String query=“匹配(a:user{ID:{aId}),(b:user{ID:{bId})”+
    “合并(a)-[:朋友]->(b)”+
    “返回a、b”;
    //Params
    Map params=新的HashMap();
    参数put(“辅助”,1);
    参数put(“投标”,7);
    //在try with resource中执行,以确保结果将被关闭
    try(Result=db.execute(查询,参数)){
    //在这里阅读结果
    }
    成功();
    }
    
    值得注意的是:

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


    可能您应该签出开发人员资源,以获取有关该主题的更多示例和信息。

    我已经尝试过,但它不起作用,这是完整的代码:try(Transaction-ignored=db.beginTx();Result-Result=db.execute(“MERGE(a:user{ID:'7})-[:friend]>(b:user{ID:'5'}返回a.ID,b.ID”))
    try
    语句需要一个代码块(
    {…}
    )。有关示例代码,请参见。是一个完整的示例。“匹配(a:user{ID:'1'}),(b:user{ID:'5'})合并(a)-[:friend]->(b)返回a,b”。我试过了,但它也不起作用。嗨,请在你的问题中添加所有相关信息:Java代码片段,异常,关于你试图实现什么的详细信息。