在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

回到顶部