1. ホーム
  2. spring

[解決済み] Spring Dataです。"delete by "はサポートされていますか?

2022-05-16 08:50:43

質問

データベースにアクセスするためにSpring JPAを使用しています。私はfindByNameとcountByNameのような例を見つけることができます、私は任意のメソッドの実装を記述する必要はありません。私はいくつかの条件に基づいてレコードのグループを削除するための例を見つけることを期待しています。

Spring JPAはdeleteByNameのような削除をサポートしていますか?どんなポインタでもありがたいです。

よろしくお願いします。

どのように解決するのですか?

非推奨の回答 (Spring Data JPA <=1.6.x) :

@Modifying というアノテーションで救われます。ただし、独自のSQLの振る舞いを提供する必要があります。

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

更新しました。

Spring Data JPAの最新バージョン(>=1.7.x)では、クエリの派生で delete , removecount の操作にアクセスできる。

public interface UserRepository extends CrudRepository<User, Long> {

    Long countByFirstName(String firstName);

    Long deleteByFirstName(String firstName);

    List<User> removeByFirstName(String firstName);

}