如何在spring数据neo4j中更改或删除对象关系的目标?

时间:2019-02-17 20:18:19

标签: kotlin neo4j spring-data-neo4j neo4j-ogm

在春季数据neo4j中,我具有简单的一对多关系:(:User)-[:EMPLOYEE_OF]->(:Company)。用户只能是一家公司的员工。这是我的实体:

class User(@Relationship(type = "EMPLOYEE_OF") var company: Company? = null, /* ids etc */)
class Company(/* ids etc */)

当我想更改该关系的目标或将其删除时,neo4j会不断添加新的关系而不是替换它。

val user = userRepository.findByName("user1")
val company = companyRepository.findByName("company1")
user.company = company
userRepository.save(user)

// 2nd case

user.company = null
userRepository.save(user)

在两种情况下,仅添加关系,从不删除关系。 有适当的方法吗?

1 个答案:

答案 0 :(得分:1)

您必须将load / findsave放入交易中。 Spring项目中执行此操作的最好方法是将逻辑提取到应用程序的服务层方法中,并将其标记为@Transactional

在此事务中,Spring Data Neo4j / Neo4j-OGM可以跟踪节点上发生的更改并更改或删除关系。