簡體   English   中英

在 java neo4j 中做 MERGE 查詢

[英]Do MERGE query in java neo4j

我有用戶 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 語法錯誤。

  1. 第一個語句在末尾有一個額外的) 它還需要以分號結尾。
  2. 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-with-resource塊中執行
  • 查詢正在使用參數 - {aId}{bId}
  • 參數作為帶有查詢的Map傳遞到數據庫
  • 查詢 ix 在try-with-resource塊中執行,以確保資源將被關閉

您可能應該從 Java開發人員資源中查看使用 Neo4j ,以獲取有關該主題的更多示例和信息。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM