簡體   English   中英

neo4J java查詢參數

[英]neo4J java query parameters

我有一個問題是將字符串列表傳遞給我的參數{code}

String request = "START sdg=node:Sfamilly(master = {code}) MATCH t-[CONTAINS_SF]->sdg RETURN count(distinct t) as count"

Map<String, Object> params = new HashMap<String, Object>();
List<String> codes = new ArrayList<String>();
codes.add("1234");
codes.add("12345");
params.put("master", codes);

Result<Map<String, Object>> resultMag = neo4jTemplate.query(request,params);

看來我的參數沒有考慮?

任何想法 ?

我使用spring數據neo4j rest 2.3.0.M1。

謝謝。 查爾斯。

首先,我想你想說

params.put("code", codes); // on line 7

更重要的是,在我看來,只有在通過ID查詢節點時才支持傳遞列表。

不確定這是最好的解決方案,但它應該工作。 它首先根據您的參數構建Lucene查詢,然后將其傳遞給您的Neo4j查詢。

private void yourMethod() {
    String request = "START sdg=node:Sfamilly({luceneQuery}) MATCH t-[CONTAINS_SF]->sdg RETURN count(distinct t) as count";

    Map<String, Object> params = new HashMap<String, Object>();
    List<String> codes = new ArrayList<String>();
    codes.add("1234");
    codes.add("12345");
    params.put("luceneQuery", listToParams("master", codes));

    Result<Map<String, Object>> resultMag = neo4jTemplate.query(request, params);
}

private String listToParams(String paramName, List<String> params) {
    if (params.isEmpty()) {
        throw new IllegalArgumentException("Empty params");
    }

    Iterator<String> paramsIterator = params.iterator();
    StringBuilder builder = new StringBuilder(paramName).append(":").append(paramsIterator.next());

    while (paramsIterator.hasNext()) {
        builder.append(" OR ").append(paramName).append(":").append(paramsIterator.next());
    }

    return builder.toString();
}

暫無
暫無

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

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