2016-07-13 14 views
3

CDIを使用してjpaリポジトリを正常に挿入しました。私はすべてのリポジトリにカスタム動作(ソフト削除)を追加したいと思っていました。 Springを使用すると、リポジトリベースクラスを指定することで顧客の行動を有効にすることができますCDIコンテキストのすべてのスプリングデータJpaリポジトリに顧客行動を追加

@EnableJpaRepositories(repositoryBaseClass = StagedRepositoryImpl.class) 

CDIで同じものを指定するにはどうすればよいですか?前もって感謝します。ここで

答えて

0

あなたのリポジトリにカスタムロジックを追加する方法です:

http://docs.spring.io/spring-data/jpa/docs/current/reference/html/#repositories.custom-implementations

基本的にあなたが{YourRepositoryName}Custom

interface UserRepositoryCustom { 
    public void someCustomMethod(User user); 
} 

という名前のカスタムリポジトリを作成し、それを実装しています

class UserRepositoryImpl implements UserRepositoryCustom { 

    public void someCustomMethod(User user) { 
    // Your custom implementation 
    } 
} 

メインリポジトリを拡張する必要がありますカスタム1。 これが役立つことを願っています!今からJPAリポジトリを継承

@NoRepositoryBean 
public interface BaseRepository<T, ID extends Serializable> extends JpaRepository<T, ID> { 

    @Override 
    default void delete(T entity){ 
     // your implementation 
    } 
} 

2.

1.は、以下のようなベースのリポジトリを作成し、(削除のために、あなたのケースで)JPAリポジトリにカスタム動作を追加するには

1

以下のようなカスタムリポジトリ(BaseRepository):

public interface EmployeeRepository extends BaseRepository<Employee, Long> { 
} 

3.リポジトリをServiceクラスに挿入し、deleteメソッドを呼び出します。

@Service 
class EmployeeService { 

    @Inject 
    private EmployeeRepository employeeRepository; 

    public void delete(Long id) { 
     employeeRepository.delete(id); 
    } 
} 

BaseRepositoryの子であるリポジトリでdeleteを呼び出すと、deleteのカスタム実装が呼び出されます。

関連する問題