Я пытаюсь обновить объект Person в версии 3.0 3.0 сообщества Neo4J с использованием SDN (spring-data-neo4j 4.1.2.RELEASE). Я вижу свое поведение при обновлении объекта.Обновление свойств объекта Neo4J с использованием SDN
- Я создал объект «лицо» от имени «человека» и сохранил то же в базе данных (строка 8).
- Изменено свойство (полное имя) сохраненного объекта, но не обновил его в базе данных (строка 10).
- Получено одно и то же лицо из базы данных, но с помощью метода findBy в другую переменную с именем «person2» (12).
- Изменения, внесенные в переменную «человек» (в строке 10), теряются.
И переменные лица и человека2 имеют те же значения свойств.
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]'}
Является ли это поведение по умолчанию Neo4j SDN?
Ниже приведены данные ПОМ, а также конфигурации, используемой для Neo4j, как сообщил в комментарии
<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" );
}
}
Я использую spring-data-neo4j 4.1.2.RELEASE. Так мне нужно изменить на neo4j-ogm? И будет ли он меняться в коде, если я переключусь? Его проект, основанный на весенней загрузке. Я работал только с данными весны до даты (как вы уже могли заметить из моих предыдущих сообщений) – Soumya
Не нужно опускаться до NeO4j OGM. Просто включите эту зависимость в вашем ПОМ: org.neo4j Neo4j-ОГМ-ядро 2.0.4 и один для водителя см http://neo4j.com/docs/ogm-manual/current/# _ dependencies_for_the_neo4j_ogm –
Luanne
Я внес соответствующие изменения. Модификации были предоставлены в самом вопросе. Теперь свойство «fullName» как переменных «person», так и «person2» имеет свои значения как «P2». Кажется, что, если одни и те же узлы извлекаются из базы данных, локальные изменения этих узлов отражаются в выбранных. Например, я изменил значение fullName на «P2» для переменной «person1». Теперь, когда я извлекал детали того же человека, используя метод findByEmail, в переменную «person2», fullName этой переменной также «P2», а не «P1», хотя я не сохранял person1 – Soumya