我不是使用Neo4j Desktop创建我的Neo4j DB,而是从头开始在Java应用程序中创建它。我通常有两个csv文件:一个节点文件和一个关系文件。因此,我分两个步骤创建数据库:首先,我使用Cypher查询创建所有节点,然后使用另一个Cypher查询创建这些节点之间的所有关系(我使用了“ GraphDatabaseService”类中的“ execute”方法)。我的问题是,现在我需要为这些关系创建动态类型,因此我需要使用APOC库(具体来说是“ CALL apoc.merge.relationship”)。我知道必须使用Neo4j Desktop安装此库,然后您可以通过在数据库上键入Cypher查询来创建数据库。但是我需要使用“ CALL apoc.merge.relationship”在Java代码中从头开始创建数据库。
谢谢:)
答案 0 :(得分:0)
首先,您需要在项目中导入APOC jar:
<dependency>
<groupId>org.neo4j.procedure</groupId>
<artifactId>apoc</artifactId>
<version>3.4.0.1</version>
</dependency>
然后您需要手动注册要使用的APOC程序:
GraphDatabaseService db = ...
Procedures procedures = ((GraphDatabaseAPI) db).getDependencyResolver().resolveDependency(Procedures.class);
List<Class<?>> apocProcedures = asList(Coll.class, apoc.map.Maps.class, Json.class, Create.class, apoc.date.Date.class, FulltextIndex.class, apoc.lock.Lock.class, LoadJson.class,
Xml.class, PathExplorer.class, Meta.class, GraphRefactoring.class);
apocProcedures.forEach((proc) -> {
try {
procedures.register(proc);
} catch (KernelException e) {
throw new RuntimeException("Error registering "+proc,e);
}
});