簡體   English   中英

Neo4j:編寫Java過程時遇到問題(此位置不允許@Procedure)

[英]Neo4j: Problems writing Java procedure (@Procedure is disallowed for this location)

我是Java的新手,但是正在嘗試編寫一個簡單的Java過程來執行一些Cypher代碼。

首先,我嘗試不執行任何步驟。 請參閱以下代碼。 它工作正常,並返回本地數據庫(Community Edition)中的節點數。

package neo4j.java.examples;

import java.io.File;
import java.util.Map;

import org.neo4j.graphdb.GraphDatabaseService;
import org.neo4j.graphdb.Result;
import org.neo4j.graphdb.factory.GraphDatabaseFactory;

public class ExecuteCypher1 {
public static void main(String[] args){

    GraphDatabaseFactory dbFactory = new GraphDatabaseFactory();
    File dbpath = new File("C:/../JavaTestDB");
    GraphDatabaseService db= dbFactory.newEmbeddedDatabase(dbpath);

    String query = "match (n) return count(n)";

    Result result = db.execute( query );

    while ( result.hasNext() )
    {
        Map<String, Object> row = result.next();
        for ( String key : result.columns() )
        {
            System.out.printf( "%s = %s%n", key, row.get( key ) );
        }
    }
}
}

然后,我嘗試將其重寫為一個過程:

package neo4j.java.examples;

import java.util.Map;

import org.neo4j.graphdb.GraphDatabaseService;
import org.neo4j.graphdb.Result;
import org.neo4j.procedure.Context;
import org.neo4j.procedure.Procedure;

public class ExecuteCypher2 {

    @Context
    public GraphDatabaseService db;

    @Procedure(name = "neo4j.java.countN")

    String query = "match (n) return count(n)";

    Result result = db.execute( query );

    while ( result.hasNext() )
    {
        Map<String, Object> row = result.next();
        for ( String key : result.columns() )
        {
            System.out.printf( "%s = %s%n", key, row.get( key ) );
        }
    }  
}

我的問題是@Procedure被標記,告訴我“此位置不允許使用注釋@Procedure”。 誰能告訴我錯誤在哪里? 我導入了org.neo4j.procedure.Procedure; 並且在neo4j的模板示例中( https://neo4j.com/docs/developer-manual/current/extending-neo4j/procedures/-@Procedure ),據我@Procedure位於同一位置它。

謝謝

編輯:我閱讀了文檔,並知道對於Java初學者來說,編寫neo4j-procedures並不那么容易。 但是,我仍然想嘗試一個簡單的示例。 我沒有錯誤地編譯了( Neo4j過程示例 ),但是刪除了mode = WRITE並刪除了相應的導入內容,沒有任何錯誤。 import org.neo4j.procedure.PerformsWrites被標記為“不贊成使用PerformsWrites類型”,並且import static org.neo4j.procedure.Procedure.Mode.WRITE org.neo4j.procedure.Procedure.Mode.WRITE無法解析。)

如果您不熟悉Java,則可能不應該開始編寫neo4j過程。 這並不是一個很好的初學者練習。

在開始使用特定的API之前,請先學習足夠的Java。

注釋進入方法。

有詳細的文檔http://neo4j.com/docs/developer-manual/current/extending-neo4j/procedures/和示例項目: https : //github.com/neo4j-examples/neo4j-procedure-template

您尚未編寫包含代碼的方法

public static void myMethod(){
{
    while ( result.hasNext() )
    {
        Map<String, Object> row = result.next();
        for ( String key : result.columns() )
        {
            System.out.printf( "%s = %s%n", key, row.get( key ) );
        }
    }
}

這是根本。 也許值得先做一些基本的Java教程。

暫無
暫無

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

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