Spring Data: "delete by" is supported? Spring Data: "delete by" is supported? spring spring

Spring Data: "delete by" is supported?


Deprecated answer (Spring Data JPA <=1.6.x):

@Modifying annotation to the rescue. You will need to provide your custom SQL behaviour though.

public interface UserRepository extends JpaRepository<User, Long> {    @Modifying    @Query("delete from User u where u.firstName = ?1")    void deleteUsersByFirstName(String firstName);}

Update:

In modern versions of Spring Data JPA (>=1.7.x) query derivation for delete, remove and count operations is accessible.

public interface UserRepository extends CrudRepository<User, Long> {    Long countByFirstName(String firstName);    Long deleteByFirstName(String firstName);    List<User> removeByFirstName(String firstName);}


Derivation of delete queries using given method name is supported starting with version 1.6.0.RC1 of Spring Data JPA. The keywords remove and delete are supported. As return value one can choose between the number or a list of removed entities.

Long removeByLastname(String lastname);List<User> deleteByLastname(String lastname);


2 ways:-

1st one Custom Query

@Modifying@Query("delete from User where firstName = :firstName")void deleteUsersByFirstName(@Param("firstName") String firstName);

2nd one JPA Query by method

List<User> deleteByLastname(String lastname);

When you go with query by method (2nd way) it will first do a get call

select * from user where last_name = :firstName

Then it will load it in a ListThen it will call delete id one by one

delete from user where id = 18delete from user where id = 19

First fetch list of object, then for loop to delete id one by one

But, the 1st option (custom query),

It's just a single query It will delete wherever the value exists.

Go through this link too https://www.baeldung.com/spring-data-jpa-deleteby