Вот мои узлы:
@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 найден в коллекции шаблонов, а соответствующий шаблон удален из списка.
Тогда сохранение () сделано, и я не получил ошибку. Но если я проверю в БД, шаблон и пользователь все еще связаны, связь все еще здесь.
Я попытался решить эту проблему Neo4j OGM, как удалить связь , которая работает. Это означает, что если я хочу удалить связь, я должен удалить связь в списке обеих сущностей:
И во многих других ветках, спрашивающих об одной и той же проблеме, люди, похоже, не предлагают удалять ассоциации с обеих сторон.
У меня вопрос: нужно ли мне удалять ассоциации с обеих сторон, или это должно работать, просто удаляя шаблон из списка избранного пользователя?
Thx