将客户行为添加到CDI上下文中的所有Spring数据Jpa存储库

时间:2016-07-13 13:19:17

标签: spring-data-jpa

使用CDI成功注入jpa存储库。我想向所有存储库添加自定义行为(软删除)。使用spring时,我可以通过指定存储库基类

来启用客户行为
@EnableJpaRepositories(repositoryBaseClass = StagedRepositoryImpl.class)

如何在CDI中指定相同的内容?提前致谢。

2 个答案:

答案 0 :(得分:1)

向Jpa存储库添加自定义行为(在您的情况下为删除),

1。创建如下所示的基本存储库:

export function getPosts(user) {
    return Post.find({user_id: user._id}).exec();
}

2. 现在从自定义存储库(即BaseRepository)继承Jpa存储库,如下所示:

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

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

3. 将您的存储库注入Service类并调用delete方法。

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

现在无论何时在BaseRepository的子库上调用delete,都会调用delete的自定义实现。

答案 1 :(得分: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
  }
}

您的主存储库应该扩展自定义存储库。 希望这有帮助!