Skip to content

Commit 5d11d63

Browse files
committed
GH-2599 - Fix bug on save with updated and new relationship properties.
Closes #2599
1 parent c175478 commit 5d11d63

File tree

2 files changed

+22
-1
lines changed

2 files changed

+22
-1
lines changed

src/main/java/org/springframework/data/neo4j/core/Neo4jTemplate.java

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -909,7 +909,8 @@ private <T> T processNestedRelations(
909909
neo4jClient.query(renderer.render(statementHolder.getStatement()))
910910
.bindAll(statementHolder.getProperties())
911911
.run();
912-
} else if (!newRelatedValuesToStore.isEmpty()) {
912+
}
913+
if (!newRelatedValuesToStore.isEmpty()) {
913914
CreateRelationshipStatementHolder statementHolder = neo4jMappingContext.createStatementForImperativeRelationshipsWithPropertiesBatch(true,
914915
sourceEntity, relationshipDescription, newRelatedValuesToStore, newRelationshipPropertiesRows);
915916

src/test/java/org/springframework/data/neo4j/integration/imperative/RepositoryIT.java

Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1686,6 +1686,26 @@ void findAndMapMultipleLevelRelationshipProperties(
16861686
assertThat(entity.getRelationshipA().getEntityA().getRelationshipB().getEntityB()).isNotNull();
16871687
}
16881688

1689+
@Test
1690+
void updateAndCreateRelationshipProperties(@Autowired HobbyWithRelationshipWithPropertiesRepository repository) {
1691+
1692+
long hobbyId = doWithSession(
1693+
session -> session.run("CREATE (n:AltPerson{name:'Freddie'}), (n)-[l1:LIKES {rating: 5}]->(h1:AltHobby{name:'Music'}) RETURN n, h1").single().get("h1").asNode().id());
1694+
1695+
AltHobby hobby = repository.findById(hobbyId).get();
1696+
assertThat(hobby.getName()).isEqualTo("Music");
1697+
assertThat(hobby.getLikedBy()).hasSize(1);
1698+
1699+
AltLikedByPersonRelationship liked = new AltLikedByPersonRelationship();
1700+
liked.setAltPerson(new AltPerson("SomethingElse"));
1701+
hobby.getLikedBy().add(liked);
1702+
1703+
repository.save(hobby);
1704+
1705+
AltHobby savedHobby = repository.findById(hobbyId).get();
1706+
assertThat(savedHobby.getLikedBy()).hasSize(2);
1707+
1708+
}
16891709
}
16901710

16911711
@Nested

0 commit comments

Comments
 (0)