在Spring数据存储库中自定义DELETE方法
对于一些日志记录的目的,我使用AspectJ登录CRUD操作,删除操作我支持我只repository.delete(object)
所以repository.delete(id)
不被支持,但同时在Spring数据仓库使用HTTP
DELETE召唤,我拦截repository.findOne()
然后repository.delete(id)
调用。
我如何在Spring Data存储库中自定义Http
DELETE方法以repository.delete(object)
不调用它repository.delete(id)
。
这是存储库界面:
package com.geopro.repositories;import org.springframework.data.jpa.repository.Query;
import org.springframework.data.repository.CrudRepository;
import org.springframework.data.repository.PagingAndSortingRepository;
import org.springframework.data.rest.core.annotation.RepositoryRestResource;
import com.geopro.entities.Product;
@RepositoryRestResource(collectionResourceRel = "product", path = "product")
public interface ProductRepository extends PagingAndSortingRepository<Product, Long> {
}
AspectJ代码:
@Pointcut("execution(public * org.springframework.data.repository.Repository+.*(..))")public void publicNonVoidRepositoryMethod() {
}
@Around("publicNonVoidRepositoryMethod()")
public Object publicNonVoidRepositoryMethod(ProceedingJoinPoint pjp) throws Throwable {
if (pjp.getArgs()[0].getClass().getName() == "java.util.Arrays$ArrayList" || pjp.getArgs()[0].getClass().getName() == "java.util.LinkedList") {
Iterable arr = (Iterable) pjp.getArgs()[0];
return saveHistoriqueOperation2(pjp, arr);
} else {
Object objs = pjp.getArgs()[0];
if (objs.getClass().getName() == "com.geopro.entities.HistOperation") {
Object o = pjp.proceed();
return o;
}
return saveHistoriqueOperation(pjp, objs);
}
}
我正在管理objs
实体对象的情况,所以我所有的删除操作都使用delete(entity_object)
,而不是delete(id)
,我正在寻找一种方法来修改调用http
DELETE’ressource_url / id’的函数调用。
提前致谢
回答:
您是否尝试过delete(id)方法上的@RestResource(exported = false)?
我刚刚创建了一个简单的项目,它似乎可以工作。
这是我项目中存储库类的代码
public interface ProductRepository extends PagingAndSortingRepository<Product, Long> { @RestResource(exported = false)
@Override
void delete(Long var1);
@Override
void delete(Product var1);
}
以上是 在Spring数据存储库中自定义DELETE方法 的全部内容, 来源链接: utcz.com/qa/404196.html