gpt4 book ai didi

java - CrudRepository OperationNotSupported

转载 作者:行者123 更新时间:2023-11-29 03:05:34 27 4
gpt4 key购买 nike

我使用 spring boot 1.2.5.RELEASE。我定义了一个扩展 CrudRepository 的接口(interface)

public interface SampleEntityService extends CrudRepository<SampleEntity, Long> {...}

所以我的存储库将包含所有方法,例如:保存、删除等。我想禁用某些方法,例如删除,因此它会抛出 NotSupportedException(或其他)。

我的第一个想法是构建装饰器并覆盖所有这些方法并手动抛出异常。

这个问题有更好的解决方案吗?

最佳答案

我假设您想要这个用于 Jpa。

实现此目的的一种方法是使用自定义 JpaRepositoryFactoryBean,将 RepositoryProxyPostProcessor 添加到禁用某些方法的 JpaRepositoryFactory

例如:

@Configuration
@EnableJpaRepositories(repositoryFactoryBeanClass = CustomJpaRepositoryFactoryBean.class)
public class MyConfig {

}

然后是类似的东西

public class CustomJpaRepositoryFactoryBean extends JpaRepositoryFactoryBean {

@Override
protected RepositoryFactorySupport createRepositoryFactory(EntityManager entityManager) {
JpaRepositoryFactory factory = JpaRepositoryFactory(entityManager);
factory.addRepositoryProxyPostProcessor(new RepositoryProxyPostProcessor() {

@Override
public void postProcess(ProxyFactory factory, RepositoryInformation repositoryInformation) {
factory.addAdvice(new MethodInterceptor() {

@Override
public Object invoke(MethodInvocation invocation) throws Throwable {
if ("unsupportedMethod".equals(invocation.getMethod().getName())) {
throw new UnsupportedOperationException();
}
return invocation.proceed();
}
});
}
});
return factory;
}
}

关于java - CrudRepository OperationNotSupported,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32349875/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com