From 2b8c73c3767691b7e226de82f931cf3a57449a90 Mon Sep 17 00:00:00 2001 From: "sumit.sg34" Date: Fri, 22 Mar 2019 23:20:12 +0530 Subject: [PATCH] BAEL-2827 added one example for @query --- .../com/baeldung/repository/FruitRepository.java | 7 +++++++ .../repository/FruitRepositoryIntegrationTest.java | 12 ++++++++++++ 2 files changed, 19 insertions(+) diff --git a/persistence-modules/spring-data-jpa-2/src/main/java/com/baeldung/repository/FruitRepository.java b/persistence-modules/spring-data-jpa-2/src/main/java/com/baeldung/repository/FruitRepository.java index b3dcc0542b..9f92909b66 100644 --- a/persistence-modules/spring-data-jpa-2/src/main/java/com/baeldung/repository/FruitRepository.java +++ b/persistence-modules/spring-data-jpa-2/src/main/java/com/baeldung/repository/FruitRepository.java @@ -3,6 +3,9 @@ package com.baeldung.repository; import java.util.List; import org.springframework.data.jpa.repository.JpaRepository; +import org.springframework.data.jpa.repository.Modifying; +import org.springframework.data.jpa.repository.Query; +import org.springframework.data.repository.query.Param; import org.springframework.stereotype.Repository; import com.baeldung.entity.Fruit; @@ -17,4 +20,8 @@ public interface FruitRepository extends JpaRepository { Long removeByName(String name); List removeByColor(String color); + + @Modifying + @Query("delete from Fruit f where f.name=:name or f.color=:color") + List deleteFruits(@Param("name") String name, @Param("color") String color); } diff --git a/persistence-modules/spring-data-jpa-2/src/test/java/com/baeldung/repository/FruitRepositoryIntegrationTest.java b/persistence-modules/spring-data-jpa-2/src/test/java/com/baeldung/repository/FruitRepositoryIntegrationTest.java index 45c106337f..74188497ee 100644 --- a/persistence-modules/spring-data-jpa-2/src/test/java/com/baeldung/repository/FruitRepositoryIntegrationTest.java +++ b/persistence-modules/spring-data-jpa-2/src/test/java/com/baeldung/repository/FruitRepositoryIntegrationTest.java @@ -1,6 +1,7 @@ package com.baeldung.repository; import static org.junit.Assert.assertEquals; +import static org.junit.Assert.assertTrue; import java.util.List; @@ -62,4 +63,15 @@ class FruitRepositoryIntegrationTest { assertEquals("deleted fruit count is not matching", 1, deletedFruitCount.intValue()); } + + @Transactional + @Test + @Sql(scripts = { "/test-fruit-data.sql" }) + public void givenFruits_WhenDeletedByColorOrName_DeletedFruitShouldReturn() { + + List fruits = fruitRepository.deleteFruits("apple", "green"); + + assertEquals("number of fruits are not matching", 3, fruits.size()); + fruits.forEach(fruit -> assertTrue("Its not a green fruit or apple", ("green".equals(fruit.getColor())) || "apple".equals(fruit.getColor()))); + } } \ No newline at end of file