diff --git a/spring-data-neo4j/src/test/java/org/springframework/data/neo4j/examples/movies/repo/UserRepository.java b/spring-data-neo4j/src/test/java/org/springframework/data/neo4j/examples/movies/repo/UserRepository.java index 058d4017a..6540e683d 100644 --- a/spring-data-neo4j/src/test/java/org/springframework/data/neo4j/examples/movies/repo/UserRepository.java +++ b/spring-data-neo4j/src/test/java/org/springframework/data/neo4j/examples/movies/repo/UserRepository.java @@ -54,6 +54,12 @@ public interface UserRepository extends PersonRepository { List findByRatingsStarsIgnoreCase(int stars); + @Query("MATCH (c:User) SET c.surname = 'Helge' RETURN c") + List bulkUpdateReturningNode(); + + @Query("MATCH (c:User) SET c.surname = 'Helge'") + void bulkUpdateNoReturn(); + @Query("MATCH (user:User) RETURN COUNT(user)") int findTotalUsers(); diff --git a/spring-data-neo4j/src/test/java/org/springframework/data/neo4j/queries/QueryIntegrationTests.java b/spring-data-neo4j/src/test/java/org/springframework/data/neo4j/queries/QueryIntegrationTests.java index 11bc489aa..c4c171977 100644 --- a/spring-data-neo4j/src/test/java/org/springframework/data/neo4j/queries/QueryIntegrationTests.java +++ b/spring-data-neo4j/src/test/java/org/springframework/data/neo4j/queries/QueryIntegrationTests.java @@ -769,4 +769,36 @@ public class QueryIntegrationTests { transaction.success(); } } + + @Test // DATAGRAPH-1249 + public void shouldFlushSessionAfterBulkUpdateReturningNodes() { + + executeUpdate("CREATE (:User {name:'Schneider'}), (:User {name:'Hundingsbane'})"); + transactionTemplate.execute(new TransactionCallbackWithoutResult() { + @Override + public void doInTransactionWithoutResult(TransactionStatus status) { + assertThat(userRepository.findAll()).hasSize(2); + + assertThat(userRepository.bulkUpdateReturningNode()).extracting(User::getSurname).containsOnly("Helge"); + + assertThat(userRepository.findAll()).extracting(User::getSurname).containsOnly("Helge"); + } + }); + } + + @Test // DATAGRAPH-1249 + public void shouldFlushSessionAfterBulkUpdateWithoutNodes() { + + executeUpdate("CREATE (:User {name:'Schneider'}), (:User {name:'Hundingsbane'})"); + transactionTemplate.execute(new TransactionCallbackWithoutResult() { + @Override + public void doInTransactionWithoutResult(TransactionStatus status) { + assertThat(userRepository.findAll()).hasSize(2); + + userRepository.bulkUpdateNoReturn(); + + assertThat(userRepository.findAll()).extracting(User::getSurname).containsOnly("Helge"); + } + }); + } }