早上好,我建立了一个本地 Neo4j 数据库,并想对 maven 依赖关系图进行建模。当我通过 webconsole 执行以下语句时,一切正常:
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" : {}}
同样,无论我使用什么空格或“/”,我都会收到 http 500 错误,表示关系的第一个 - [:ROOT]-> 无效。
直接通过发布新节点
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);
(免责声明:我会尽快将参数移动到正确的位置这个版本工作;))
我可以打赌这是一个完全微不足道的错误,但我现在盯着这个超过半个工作日,我的任何变化都不想工作。如果有人知道答案,那就太棒了。
问候,弗洛里安·罗姆