在CDI上下文中向所有Spring Data JPA存储库添加客户行为

3

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

@EnableJpaRepositories(repositoryBaseClass = StagedRepositoryImpl.class)

我应该如何在CDI中指定相同的内容?谢谢提前。
2个回答

1

为了向Jpa Repositories添加自定义行为(在您的情况下是删除),

1. 创建一个基本存储库,如下所示:

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

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

2. 现在像下面这样从自定义存储库(即BaseRepository)继承Jpa存储库:

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

3. 将您的存储库注入到服务类中并调用删除方法。

@Service
class EmployeeService {

    @Inject
    private EmployeeRepository employeeRepository;

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

现在,每当您调用继承自BaseRepository的存储库上的delete方法时,将会调用您自定义的delete方法实现。

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
  }
}

你的主要代码库应该扩展自定义代码库。 希望这可以帮到你!


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接