Ich versuche, eine Personenentität in Neo4J Community Edition 3.0.3 mit SDN zu aktualisieren (spring-data-neo4j 4.1.2.RELEASE). Ich sehe eine Art Verhalten beim Aktualisieren einer Entität.Aktualisieren der Eigenschaften von Neo4J-Entität mit SDN
- Ich habe eine ‚Person‘ Einheit der Namen „Person“ und rettete die gleichen in der Datenbank (Linie 8).
- Eine Eigenschaft (fullName) der gespeicherten Entität wurde geändert, aber hat diese in der Datenbank nicht aktualisiert (Zeile 10).
- Wurde dieselbe Person aus der Datenbank abgerufen, aber mithilfe einer findBy-Methode in eine andere Variable namens "person2" (12).
- Die in Variable "Person" (in Zeile 10) vorgenommenen Änderungen gehen verloren.
Sowohl die Person als auch die person2 Variable haben die gleichen Eigenschaftswerte.
1.Person person = new Person(); 2. person.setUuid(UUID.randomUUID().toString()); 3. person.setFullName("P1"); 4. person.setEmail("[email protected]"); 5. person.setUsername("[email protected]"); 6. person.setPhone("123456789"); 7. person.setDob(new Date()); 8. personService.create(person); 9. System.out.println(person); //Person{id=27, username='[email protected]', fullName='P1', email='[email protected]'} 10. person.setFullName("P2"); 11. System.out.println(person); //Person{id=27, username='[email protected]', fullName='P2', email='[email protected]'} 12.Person person2 = personService.findByEmail("[email protected]"); 13. System.out.println(person2); //Person{id=27, username='[email protected]', fullName='P1', email='[email protected]'} 14. System.out.println(person); //Person{id=27, username='[email protected]', fullName='P1', email='[email protected]'}
Ist dies das Standardverhalten von Neo4j SDN?
unten sind die pom Einträge sowie die für Neo4j verwendete Konfiguration, wie sie in dem Kommentar geraten
<dependency>
<groupId>org.springframework.data</groupId>
<artifactId>spring-data-neo4j</artifactId>
<!-- <version>4.1.2.RELEASE</version> -->
</dependency>
<dependency>
<groupId>org.neo4j</groupId>
<artifactId>neo4j-ogm-core</artifactId>
<version>2.0.4</version>
</dependency>
public class MyNeo4jConfiguration extends Neo4jConfiguration {
@Bean
public org.neo4j.ogm.config.Configuration getConfiguration() {
org.neo4j.ogm.config.Configuration config = new org.neo4j.ogm.config.Configuration();
config
.driverConfiguration()
.setDriverClassName("org.neo4j.ogm.drivers.http.driver.HttpDriver")
.setCredentials("neo4j", "admin")
.setURI("http://localhost:7474");
return config;
}
@Bean
public SessionFactory getSessionFactory() {
return new SessionFactory(getConfiguration(), "au.threeevolutions.bezzur.domain" );
}
}
Ich verwende spring-data-neo4j 4.1.2.RELEASE. Muss ich also zu neo4j-ogm wechseln? Und wird es viele Änderungen im Code geben, wenn ich umschalte? Es ist ein Spring-Boot-basiertes Projekt. Ich habe nur an der Frühjahrsdaten bis zum Datum gearbeitet (wie Sie vielleicht bereits von meinen früheren Posts bemerkt haben) – Soumya
Keine Notwendigkeit, auf Neo4j OGM herunterzulassen. Nur sind diese Abhängigkeit in Ihrem pom: org.neo4j Neo4j-OGM-Core 2.0.4 und eine für Ihre Fahrer sehen http://neo4j.com/docs/ogm-manual/current/# _ dependencies_for_the_neo4j_ogm –
Luanne
Ich habe entsprechende Änderungen vorgenommen. Die Änderungen wurden in der Frage selbst vorgenommen. Jetzt hat die Eigenschaft "fullName" der beiden Variablen "person" und "person2" ihre Werte als "P2". Es scheint, dass wenn die gleichen Knoten aus der Datenbank geholt werden, die lokalen Änderungen in diesen Knoten in den geholten Knoten widergespiegelt werden. Zum Beispiel habe ich den Wert von fullName in "P2" für die Variable "person1" geändert. Wenn ich jetzt die Details der gleichen Person mit der findByEmail-Methode in die Variable "person2" geholt habe, ist der fullName dieser Variable auch "P2" und nicht "P1", obwohl ich person1 nicht persistiert habe – Soumya