我正在开发一个使用Neo4j进行数据存储的Spring Boot应用程序,
我有一个SkillCategory
和Skills
的关系。
因此,一个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 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")));
最佳答案
启动之间的数据消失是由于使用嵌入式驱动程序和无常数据存储启动SDN引起的。
将驱动程序设置为:driver=org.neo4j.ogm.drivers.embedded.driver.EmbeddedDriver
时,还必须确保为Neo4j数据存储区URI=file:///var/tmp/neo4j.db
设置一个位置,以使数据在两次启动之间可持久保存,否则,数据将仅在应用程序运行时存在。
更多详细信息可以为found here。