首页 > 解决方案 > 为什么在 new4j 数据库中找不到我从 java 代码中保存的图形?

问题描述

我使用 Java 代码创建了一个图表并将其保存到我的 neo4j 数据库中。但是当我通过浏览器查询数据库时,我看到没有图表。我在执行我的 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 中的最后一行结束后,执行只是无限期地等待。所以我不得不终止执行并检查数据库。我希望加载整个图表。

标签: neo4j

解决方案


推荐阅读