重启spring boot应用程序时,Neo4j返回null

时间:2016-09-29 05:06:52

标签: java spring neo4j spring-data-neo4j spring-data-neo4j-4

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

我的关系为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&amp;应用程序启动时Skills

问题在于:如果我删除了DB&amp;启动Spring Boot,一切正常。 但是当我重新启动Spring Boot应用程序时skillList 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")));

1 个答案:

答案 0 :(得分:2)

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

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

更多详情可以是found here