私は、Javaに新しいですが、いくつかのサイファーコードを実行する単純なJavaプロシージャを記述しようとしています。のNeo4j:問題のJavaプロシージャを記述(@Procedureはこのロケーションでは使用できません)
まず、私は手順なしでそれをやろうとしました。次のコードを参照してください。それは正常に動作し、ローカルデータベース(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));
}
}
}
}
は、その後、私は手順としてそれをrewrteしようとした:
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
がマークされていることです。誰かが間違いがどこにあるのか教えてもらえますか? Iはorg.neo4j.procedure.Procedure;
とのNeo4jのテンプレートの例でインポート(https://neo4j.com/docs/developer-manual/current/extending-neo4j/procedures/ - secion 6.1.3.3)を@Procedure
は限り私はそれを見るのと同じ位置にあります。
EDITありがとう: 私はマニュアルを読み、のNeo4j-手続きをwiritingするのjava-初心者のためのそれは容易ではないことを知っています。しかし、私はまだ簡単な例を試してみたい。私はエラーなしで(Neo4j procedure example)をコンパイルしましたが、mode = WRITE
を削除し、それに応じてエラーは発生しません。 (「タイプPerformsWritesが廃止されました」とimport static org.neo4j.procedure.Procedure.Mode.WRITE
coudn'tが解決するようimport org.neo4j.procedure.PerformsWrites
をマークした。)
ありがとうございます。私は初心者にはそれほど良くないと知っていますが、近いうちにneo4j proceudresを書く必要があるかもしれないので、私はまだ試してみたいと思っています。 「注釈はメソッドに移ります」とはどういう意味ですか? 私はドキュメントを読んで、サンプル・プロシージャ・テンプレートを実行しています(多かれ少なかれ/少なくともエラーはありません)。注: 'mode = WRITE'とそれに応じたインポートを削除して実行しました。インポートは 'org.neo4j.procedure.PerformsWrites'はorg.neo4j.procedure.Procedure.Mode.WRITE'が解決さcoudnt'「タイプの推奨されていませんPerformsWrites」およびインポート静的..その上の任意のヒントとしてマークされていましたか? – user7400000