Skip to content

Commit b47b8e2

Browse files
Additional integration tests
1 parent d201bcf commit b47b8e2

File tree

2 files changed

+53
-0
lines changed

2 files changed

+53
-0
lines changed

spring-data-jpa/src/test/java/org/springframework/data/jpa/repository/UserRepositoryFinderTests.java

Lines changed: 45 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -178,6 +178,51 @@ void executesQueryWithEmptyOnCollection() {
178178
assertThat(userRepository.findByColleaguesRolesIsNotEmpty()).containsExactlyInAnyOrder(oliver);
179179
}
180180

181+
@Test // GH-4110
182+
void executesQueryWithEmptyOnCollectionViaMultipleJoins() {
183+
184+
carter.setManager(dave);
185+
dave.addColleague(oliver);
186+
dave.addColleague(carter);
187+
userRepository.save(dave);
188+
userRepository.save(carter);
189+
userRepository.save(oliver);
190+
191+
userRepository.save(oliver);
192+
193+
assertThat(userRepository.findByManagerColleaguesRolesIsNotEmpty()).containsExactly(carter);
194+
}
195+
196+
@Test // GH-4110
197+
void executesQueryWithContainingOnCollectionViaJoin() {
198+
199+
dave.addColleague(oliver);
200+
oliver.addRole(singer);
201+
userRepository.save(dave);
202+
userRepository.save(oliver);
203+
204+
assertThat(userRepository.findByColleaguesRolesContaining(singer)).containsExactlyInAnyOrder(dave, oliver);
205+
assertThat(userRepository.findByColleaguesRolesNotContaining(drummer)).containsExactlyInAnyOrder(dave, carter, oliver);
206+
}
207+
208+
@Test // GH-4110
209+
void executesQueryWithMultipleCollectionPredicates() {
210+
211+
dave.addColleague(oliver);
212+
dave.getAttributes().add("test");
213+
userRepository.save(dave);
214+
userRepository.save(oliver);
215+
216+
assertThat(userRepository.findByColleaguesRolesIsEmptyAndAttributesIsNotEmpty())
217+
.containsExactlyInAnyOrder(dave);
218+
}
219+
220+
@Test // GH-4110
221+
void executesQueryWithEmptyOnCollectionWithNoColleagues() {
222+
223+
assertThat(userRepository.findByColleaguesRolesIsEmpty()).containsExactly(dave, carter, oliver);
224+
}
225+
181226
@Test // DATAJPA-92
182227
void findsByLastnameIgnoringCase() {
183228

spring-data-jpa/src/test/java/org/springframework/data/jpa/repository/sample/UserRepository.java

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -150,6 +150,14 @@ Window<User> findTop3ByFirstnameStartingWithOrderByFirstnameAscEmailAddressAsc(S
150150

151151
List<User> findByColleaguesRolesIsNotEmpty();
152152

153+
List<User> findByManagerColleaguesRolesIsNotEmpty();
154+
155+
List<User> findByColleaguesRolesContaining(Role role);
156+
157+
List<User> findByColleaguesRolesNotContaining(Role role);
158+
159+
List<User> findByColleaguesRolesIsEmptyAndAttributesIsNotEmpty();
160+
153161
// DATAJPA-292
154162
@Query("select u from User u where u.firstname like ?1%")
155163
List<User> findByFirstnameLike(String firstname);

0 commit comments

Comments
 (0)