1. ホーム
  2. java

[解決済み] Spring Data JPAにカスタムメソッドを追加する方法

2022-04-19 17:46:54

質問

Spring Data JPAについて調べています。以下の例では、デフォルトで動作するすべてのクラッドとファインダー機能を取得し、私がファインダーをカスタマイズしたい場合、それはまた、インタフェース自体で簡単に行うことができます考えてみましょう。

@Transactional(readOnly = true)
public interface AccountRepository extends JpaRepository<Account, Long> {

  @Query("<JPQ statement here>")
  List<Account> findByCustomer(Customer customer);
}

上記のAccountRepositoryにカスタムメソッドとその実装を追加する方法を教えてください。インターフェイスであるため、そこにメソッドを実装することはできません。

どうすればいいですか?

カスタムメソッド用に別のインターフェイスを作成する必要があります。

public interface AccountRepository 
    extends JpaRepository<Account, Long>, AccountRepositoryCustom { ... }

public interface AccountRepositoryCustom {
    public void customMethod();
}

を作成し、そのインターフェイスの実装クラスを提供します。

public class AccountRepositoryImpl implements AccountRepositoryCustom {

    @Autowired
    @Lazy
    AccountRepository accountRepository;  /* Optional - if you need it */

    public void customMethod() { ... }
}

こちらもご覧ください。