Le test ci-dessous échoue si je supprime le premier persist(). Pourquoi ai-je besoin de conserver le NodeEntity pour que le Set soit instancié? Y a-t-il une meilleure façon de faire cela? Je ne veux pas avoir à écrire dans la base de données plus souvent que nessesary.Comment persister des relations entre Neo4J NodeEntitys dans Spring Data Graph sans appeler persist deux fois
@Test
public void testCompetenceCreation() {
Competence competence = new Competence();
competence.setName("Testcompetence");
competence.persist(); //test fails if this line is removed
Competence competenceFromDb = competenceRepository.findOne(competence.getId());
assertEquals(competence.getName(), competenceFromDb.getName());
Education education = new Education();
education.setName("Bachelors Degree");
competence.addEducation(education);
competence.persist();
assertEquals(competence.getEducations(), competenceFromDb.getEducations());
}
Si je supprime la ligne mentionnée, l'exception se produit ci-dessous:
Lancers
java.lang.NullPointerException
at com.x.entity.Competence.addEducation(Competence.java:54)
Competence.class:
@JsonIgnoreProperties({"nodeId", "persistentState", "entityState"})
@NodeEntity
public class Competence {
@RelatedTo(type = "EDUCATION", elementClass = Education.class)
private Set<Education> educations;
public Set<Education> getEducations() {
return educations;
}
public void addEducation(Education education) {
this.educations.add(education);
}
}
Education.class
@JsonIgnoreProperties({"nodeId", "persistentState", "entityState"})
@NodeEntity
public class Education {
@GraphId
private Long id;
@JsonBackReference
@RelatedTo(type = "COMPETENCE", elementClass = Competence.class, direction = Direction.INCOMING)
private Competence competence;
@Indexed
private String name;
public Long getId() {
return id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
}
Merci pour votre réponse rapide Michael. Je comprends maintenant comment j'ai besoin d'utiliser persist, et vous étiez également sur votre note sur le type de relation dans l'annotation. Pourriez-vous expliquer ce que vous voulez que j'écrive dans le Jira? Depuis que je le comprends, ce n'est pas un bug mais plutôt que je n'ai pas une compréhension complète de la façon dont fonctionne Spring Data Graph :-) –
Il suffit de créer le problème et de le lier à cette discussion. Comme description ajouter - initialiser les champs de collection de manière cohérente. Merci –
Fait! Encore une fois, merci pour votre aide, très appréciée. https://jira.springsource.org/browse/DATAGRAPH-135 –