我使用Java代码创建了一个图形,并将其保存到我的neo4j db中。但是,当我通过浏览器查询数据库时,发现没有图形。我执行Java代码时也没有看到任何错误。我发现的一个问题是代码没有退出。这只是永远的等待,我不得不用ctrl + c杀死它。
我从Excel工作表中读取记录,并将数据转换为树状数据结构,然后将其保存到数据库中。 运行代码后,我重新启动了数据库,以查看它是否从文件中重新加载了图形。但是图仍然是空的。
节点类:
package com.ptg.courseExtractor.neo4j.vo;
import org.neo4j.ogm.annotation.NodeEntity;
import org.neo4j.ogm.annotation.Relationship;
@NodeEntity
public class CareerField extends Entity {
String careerField;
@Relationship(type = "CONTAINS")
List<Strand> strands;
public CareerField() {
}
public CareerField(String careerField, List<Strand> strands) {
this.careerField = careerField;
this.strands = strands;
}
public List<Strand> getStrands() {
return strands;
}
}
package com.ptg.courseExtractor.neo4j.vo;
import org.neo4j.ogm.annotation.NodeEntity;
import org.neo4j.ogm.annotation.Relationship;
@NodeEntity
public class Strand extends Entity{
String strandId;
String strandTitle;
public Strand() {
}
public Strand(String strandId, String strandTitle) {
this.strandId = strandId;
this.strandTitle = strandTitle;
}
}
编写图形的代码:
val session = SessionFactory.sessionFactory.openSession()
session.purgeDatabase()
files.foreach(file => {
val mappings = parseFile(file)
val courseMaps = mappings.asScala.groupBy(x => x._1)
.toList.map(x => new CareerField(x._1, x._2.map(y => new Strand(y._2.toString, y._3, y._4.asJava)).asJava))
for (course <- courseMaps) {
println(s"Saving Career Field with ${course.getStrands.size()} strands")
session.save(course)
}
会话工厂:
object SessionFactory {
val configuration = new Configuration.Builder().uri("bolt://localhost:7687").credentials("neo4j", "*********").build();
val sessionFactory = new SessionFactory(configuration, "com.ptg.courseExtractor.neo4j.vo")
}
控制台输出:(2个图形,每个图形中有1个父节点,分别有7个和6个孩子。) 用7条线保存职业领域 用6条线保存职业领域
我使用密码浏览器查询了该图。我得到空输出。数据库为空。 我从IntelliJ执行代码。 main的最后一行结束后,执行将无限期地等待。因此,我不得不终止执行并检查数据库。 我希望整个图都被加载。