在春季数据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)
在两种情况下,仅添加关系,从不删除关系。 有适当的方法吗?
答案 0 :(得分:1)
您必须将load
/ find
和save
放入交易中。 Spring项目中执行此操作的最好方法是将逻辑提取到应用程序的服务层方法中,并将其标记为@Transactional
。
在此事务中,Spring Data Neo4j / Neo4j-OGM可以跟踪节点上发生的更改并更改或删除关系。