Использование Neo4j-OGM Я пытаюсь обновить @RelationshipEntity
, чтобы он указывал на другой объект узла. Но когда я пытаюсь сохранить изменение, оно не сохраняется, а просто возвращается к исходному объекту.
Например, это то, чего я хочу достичь:
from: (X)--[R]->(M) (Y)
to: (Y)--[R]->(M) (X)
Я сделал пример в интеграционном тесте CineastsRelationshipEntityTest
:
@Test
public void canUpdateRelationshipEntity() {
Movie movie = new Movie("M", 2020);
Actor actor = new Actor("X");
Role relationship = actor.playedIn(movie, "R");
Actor actor2 = new Actor("Y");
actor2.setRoles(new HashSet<>());
assertThat(actor.getRoles()).hasSize(1);
assertThat(actor2.getRoles()).hasSize(0);
session.save(actor);
session.save(actor2);
session.clear();
// try to update the relationship:
relationship.setActor(actor2);
actor.getRoles().remove(relationship);
actor2.getRoles().add(relationship);
assertThat(actor.getRoles()).hasSize(0);
assertThat(actor2.getRoles()).hasSize(1);
session.save(actor);
session.save(actor2);
session.clear();
Actor loadedActor = session.load(Actor.class, actor.getUuid());
Actor loadedActor2 = session.load(Actor.class, actor2.getUuid());
assertThat(loadedActor.getRoles()).hasSize(0);
assertThat(loadedActor2.getRoles()).hasSize(1);
}
В конце loadedActor
и loadedActor2
не отражают обновленные отношения.