[英]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.