diff --git a/persistence-modules/pom.xml b/persistence-modules/pom.xml index ce6f4d3424..06b549b235 100644 --- a/persistence-modules/pom.xml +++ b/persistence-modules/pom.xml @@ -87,7 +87,7 @@ spring-data-jpa-query spring-data-jpa-query-2 spring-data-jpa-query-3 - + spring-data-jpa-repo spring-data-jpa-repo-2 spring-data-jdbc spring-data-keyvalue diff --git a/persistence-modules/spring-data-jpa-repo/src/main/java/com/baeldung/derivedquery/repository/UserRepository.java b/persistence-modules/spring-data-jpa-repo/src/main/java/com/baeldung/derivedquery/repository/UserRepository.java index 76cdf41d81..8f86e8ce49 100644 --- a/persistence-modules/spring-data-jpa-repo/src/main/java/com/baeldung/derivedquery/repository/UserRepository.java +++ b/persistence-modules/spring-data-jpa-repo/src/main/java/com/baeldung/derivedquery/repository/UserRepository.java @@ -2,6 +2,8 @@ package com.baeldung.derivedquery.repository; import com.baeldung.derivedquery.entity.User; import org.springframework.data.jpa.repository.JpaRepository; +import org.springframework.data.jpa.repository.Query; +import org.springframework.data.repository.query.Param; import java.time.ZonedDateTime; import java.util.Collection; @@ -49,9 +51,12 @@ public interface UserRepository extends JpaRepository { List findByAgeIn(Collection ages); - List findByNameOrBirthDate(String name, ZonedDateTime birthDate); + @Query(value = "select * from users where (name = :nameParam OR birth_date <> :birthDateParam)", nativeQuery = true) + List findByNameOrBirthDate(@Param(value = "nameParam") String nameParam, @Param(value = "birthDateParam") ZonedDateTime birthDateParam); - List findByNameOrBirthDateAndActive(String name, ZonedDateTime birthDate, Boolean active); + @Query(value = "select * from users where (name = :nameParam OR birth_date <> :birthDateParam) and active = :activeParam", nativeQuery = true) + List findByNameOrBirthDateAndActive(@Param(value = "nameParam") String nameParam, @Param(value = "birthDateParam") ZonedDateTime birthDateParam, + @Param(value = "activeParam") Boolean activeParam); List findByNameOrderByName(String name); diff --git a/persistence-modules/spring-data-jpa-repo/src/test/java/com/baeldung/derivedquery/repository/UserRepositoryIntegrationTest.java b/persistence-modules/spring-data-jpa-repo/src/test/java/com/baeldung/derivedquery/repository/UserRepositoryIntegrationTest.java index 2a6e166b88..75e0db253f 100644 --- a/persistence-modules/spring-data-jpa-repo/src/test/java/com/baeldung/derivedquery/repository/UserRepositoryIntegrationTest.java +++ b/persistence-modules/spring-data-jpa-repo/src/test/java/com/baeldung/derivedquery/repository/UserRepositoryIntegrationTest.java @@ -161,7 +161,7 @@ public class UserRepositoryIntegrationTest { @Test public void whenByNameOrBirthDateAndActive() { - assertEquals(3, userRepository.findByNameOrBirthDateAndActive(USER_NAME_ADAM, BIRTHDATE, false).size()); + assertEquals(2, userRepository.findByNameOrBirthDateAndActive(USER_NAME_ADAM, BIRTHDATE, false).size()); } @Test