diff --git a/spring-data-jpa/src/main/java/org/springframework/data/jpa/repository/query/JpaResultConverters.java b/spring-data-jpa/src/main/java/org/springframework/data/jpa/repository/query/JpaResultConverters.java index c9cfa4490..4ebe36191 100644 --- a/spring-data-jpa/src/main/java/org/springframework/data/jpa/repository/query/JpaResultConverters.java +++ b/spring-data-jpa/src/main/java/org/springframework/data/jpa/repository/query/JpaResultConverters.java @@ -47,7 +47,8 @@ public final class JpaResultConverters { * * @author Thomas Darimont */ - public enum BlobToByteArrayConverter implements Converter { + @SuppressWarnings("NullAway") + public enum BlobToByteArrayConverter implements Converter { INSTANCE; diff --git a/spring-data-jpa/src/test/java/org/springframework/data/jpa/repository/UserRepositoryTests.java b/spring-data-jpa/src/test/java/org/springframework/data/jpa/repository/UserRepositoryTests.java index a95604446..fcf050bf4 100644 --- a/spring-data-jpa/src/test/java/org/springframework/data/jpa/repository/UserRepositoryTests.java +++ b/spring-data-jpa/src/test/java/org/springframework/data/jpa/repository/UserRepositoryTests.java @@ -922,6 +922,8 @@ class UserRepositoryTests { assertThat(repository.existsById(secondUser.getId())).isTrue(); assertThat(repository.existsById(thirdUser.getId())).isTrue(); assertThat(repository.existsById(fourthUser.getId())).isTrue(); + + em.clear(); } private static void assertSameElements(Collection first, Collection second) { @@ -2914,10 +2916,8 @@ class UserRepositoryTests { @Test // GH-4172 void findByFluentSpecificationWithDtoProjectionJoins() { - flushTestUsers(); firstUser.setManager(secondUser); - em.persist(firstUser); - em.flush(); + flushTestUsers(); record MyProjection(String name, int age, boolean active, String managerName, int managerAge) { } @@ -3694,6 +3694,31 @@ class UserRepositoryTests { assertThat(result).containsOnly(firstUser, secondUser); } + @Test // GH-4179 + void countOnCollectionPropertyWithIs() { + + firstUser.addColleague(secondUser); + thirdUser.addColleague(firstUser); + + flushTestUsers(); + + assertThat(repository.countByColleagues(secondUser)).isOne(); + assertThat(repository.countByColleaguesContaining(secondUser)).isOne(); + } + + @Test // GH-4179 + void countOnNestedCollectionPropertyWithIs() { + + firstUser.addColleague(secondUser); + firstUser.addColleague(thirdUser); + + secondUser.addRole(adminRole); + + flushTestUsers(); + + assertThat(repository.countByColleaguesRoles(adminRole)).isOne(); + } + @Test // GH-2593 void insertStatementModifyingQueryWorks() { flushTestUsers(); diff --git a/spring-data-jpa/src/test/java/org/springframework/data/jpa/repository/sample/UserRepository.java b/spring-data-jpa/src/test/java/org/springframework/data/jpa/repository/sample/UserRepository.java index 073bbc965..372875c90 100644 --- a/spring-data-jpa/src/test/java/org/springframework/data/jpa/repository/sample/UserRepository.java +++ b/spring-data-jpa/src/test/java/org/springframework/data/jpa/repository/sample/UserRepository.java @@ -561,6 +561,15 @@ public interface UserRepository extends JpaRepository, JpaSpecifi // GH-4179 List findByRoles(Role role); + // GH-4179 + long countByColleagues(User user); + + // GH-4179 + long countByColleaguesContaining(User user); + + // GH-4179 + long countByColleaguesRoles(Role Role); + // DATAJPA-829 List findByRolesContaining(Role role);