我已成功使用CDI注入jpa存储库。我想要为所有存储库添加自定义行为(软删除)。当使用Spring时,我可以通过指定存储库基类来启用自定义行为。
@EnableJpaRepositories(repositoryBaseClass = StagedRepositoryImpl.class)
我应该如何在CDI中指定相同的内容?谢谢提前。
我已成功使用CDI注入jpa存储库。我想要为所有存储库添加自定义行为(软删除)。当使用Spring时,我可以通过指定存储库基类来启用自定义行为。
@EnableJpaRepositories(repositoryBaseClass = StagedRepositoryImpl.class)
为了向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);
}
}
这里是向您的存储库添加自定义逻辑的方法:
基本上,您需要创建一个名为{YourRepositoryName}Custom
的自定义存储库
interface UserRepositoryCustom {
public void someCustomMethod(User user);
}
然后实现它:
class UserRepositoryImpl implements UserRepositoryCustom {
public void someCustomMethod(User user) {
// Your custom implementation
}
}
你的主要代码库应该扩展自定义代码库。 希望这可以帮到你!