Neo4j returns 重启时为 null spring 引导应用程序

Neo4j returns null when restart spring boot application

我正在开发 Spring 使用 Neo4j 进行数据存储的引导应用程序,

我有 SkillCategorySkills 的关系。 所以一个SKillCategory包含很多技能。 以下是域结构:

Skill.java

@NodeEntity
public class Skill extends BaseEntity {
    private String name;
    private boolean isVerified;
    private boolean isEnabled = true;
    @Relationship(type = SKILL_OF_LEVEL, direction = "OUTGOING")
    private SkillLevel skillLevel;

    public Skill() {
    }

    public Skill(String name) {
        this.name = name;
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public boolean isEnabled() {
        return isEnabled;
    }

    public void setEnabled(boolean enabled) {
        isEnabled = enabled;
    }

    public boolean isVerified() {
        return isVerified;
    }

    public void setVerified(boolean verified) {
        isVerified = verified;
    }

    public SkillLevel getSkillLevel() {
        return skillLevel;
    }

    public void setSkillLevel(SkillLevel skillLevel) {
        this.skillLevel = skillLevel;
    }
}

SkillCategory.java

@NodeEntity
public class SkillCategory extends BaseEntity {
    private String name;
    private boolean isEnabled = true;
    @Relationship(type =  CONTAINS_SKILL,direction = "OUTGOING")
    private List<Skill> skillList;

    public SkillCategory() {
    }

    public SkillCategory(String name) {
        this.name = name;
    }

    public SkillCategory(String name, List<Skill> skillList) {
        this.name = name;
        this.skillList = skillList;
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public boolean isEnabled() {
        return isEnabled;
    }

    public void setEnabled(boolean enabled) {
        isEnabled = enabled;
    }

    public List<Skill> getSkillList() {
        return skillList;
    }

    public void setSkillList(List<Skill> skillList) {
        this.skillList = skillList;
    }
}

我正在使用 GraphRepository 执行 CRUD 操作。 我在应用程序启动时创建 SkillCategory & Skills

这是问题所在:如果我删除数据库并启动 Spring 引导,一切正常。 但是当我重新启动 Spring 启动应用程序时,skillList in SkillCategory 为空。

如果有人在 Spring Data Neo4j 方面有经验,请帮助我缩小问题范围。

存储库代码:

@Repository
public interface SkillGraphRepository extends GraphRepository<Skill>{
List<SkillCategory> findAll();
}

我假设如果我获取 skillCategory,它也会自动急切加载以获取 SkillCategory 中的技能

我只是在使用注入 SkillCategoryRepository 的服务

skillCategoryService.create(new skillCategory("Category1"),Arrays.asList(new Skill("Skill 1"),new     SKill("Skill 2")));

启动之间的数据消失是由使用嵌入式驱动程序和非永久数据存储启动 SDN 引起的。

将驱动程序设置为:driver=org.neo4j.ogm.drivers.embedded.driver.EmbeddedDriver 您还必须确保为 Neo4j 数据存储设置一个位置 URI=file:///var/tmp/neo4j.db 以使数据在启动之间持久存在,否则您的数据将仅在应用程序存在时存在是 运行.

更多详情可以found here.