【发布时间】:2019-01-09 11:16:09
【问题描述】:
这是我的节点:
@NodeEntity
public class User {
@Id
@Index(unique = true)
@GeneratedValue(strategy = UuidStrategy.class)
private String id;
@Relationship(type = "LIKE")
private Collection<Pattern> likedPatterns;
...
}
@NodeEntity
public class Pattern {
@Id
@Index(unique = true)
@GeneratedValue(strategy = UuidStrategy.class)
private String id;
private String name;
@Relationship(type = "LIKE", direction = Relationship.INCOMING)
private List<User> likes;
...
}
我尝试删除用户和模式之间的关系:
@Override
@Transactional(readOnly = false)
public void deleteLikedPattern(String patternId, Long authId) {
User user = userRepository.findByAuthId(authId);
user.getLikedPatterns().removeIf(p -> p.getId().equals(patternId));
userRepository.save(user);
}
在开始用户有 2 种模式。在调试时,我可以看到在模式集合中找到了 patternId,并且从列表中删除了相应的模式。 然后 save() 完成,我没有收到错误。但是如果我签入数据库,模式和用户仍然链接,关系仍然在这里。
我在这篇帖子Neo4j OGM how to delete relationship 上尝试了解决方案,它有效。这意味着如果我想删除关系,我必须删除两个实体列表中的关联:
-
从用户模式的集合中删除模式
-
从模式用户的集合中删除用户)
这有点乏味...
在许多其他询问相同问题的线程中,人们似乎不建议删除双方的关联。 我的问题是:我必须删除双方的关联,还是应该通过从用户的收藏列表中删除模式来工作?
谢谢
【问题讨论】:
标签: spring-data-neo4j neo4j-ogm