おはようございます。ローカルのNeo4jデータベースをセットアップし、Mavenの依存関係のグラフをモデル化したいと思います。Webコンソールを介して次のステートメントを実行すると、すべてが正常に機能します。
start root = node(1)
create unique root -[:ROOT]-> (n{groupId:'fancyStuff',artifactId:'somewhat', version:'1.4'})
return n
(注:rootnodeはデバッグ目的で存在し、後で実際の構造に置き換えられます)したがって、ここでは、空白の量に関係なく、または'を"に置き換えても、すべてが正常に機能します。
私のJavaアプリケーションでは、次の関数があります。
private static URI getOrCreate(Artifact artifact){
String cypherUri = SERVER_ROOT_URI + "cypher";
String cypherStatement="{\"query\" : \"start x = node(1) " +
"create unique x -[:ROOT]-> (artifact{groupId:\"" + artifact.getGroupID() +
"\", artifactId:\"" + artifact.getArtifactID() +
"\", version: \"" + artifact.getVersion() +
"\"}) return artifact ,\"params\" : {}}";
WebResource resource = Client.create()
.resource( cypherUri );
ClientResponse response = resource.accept( MediaType.APPLICATION_JSON_TYPE )
.type( MediaType.APPLICATION_JSON_TYPE )
.entity( cypherStatement )
.post( ClientResponse.class );
System.out.println( String.format( "POST to [%s], status code [%d]",
cypherUri, response.getStatus() ) );
response.close();
return response.getLocation();
}
基本的に私は次のようなjsonファイルを投稿します
{"query" : "start root = node(1) create unique root-[:ROOT]->(artifact{groupId:'{"query" : "start root = node(1) create unique root-[:ROOT]->(artifact{groupId:'lol',artifactId:'somewhat',version:'1.4'}) return artifact","params" : {}}
また、どのホワイトスペースまたは「/」を使用しても、関係の最初の-[:ROOT]->が無効であるというhttp500エラーが発生します。
経由で直接新しいノードを投稿する
final String nodeEntryPointUri = SERVER_ROOT_URI + "node";
WebResource resource = Client.create().resource( nodeEntryPointUri );
ClientResponse response = resource.accept( MediaType.APPLICATION_JSON_TYPE )
.type( MediaType.APPLICATION_JSON_TYPE )
.entity( /*some json*/)
.post(ClientResponse.class);
(免責事項:このバージョンが機能するように、パラメータを適切な場所にできるだけ早く移動します;))
まったく些細なエラーだと思いますが、今は半日以上これを見つめています。私のバリエーションはどれも機能したくありません。誰かが答えを知っていれば素晴らしいでしょう。
ご挨拶、フロリアン・ローム