Java 截取spring数据jpa注释@修改

Java 截取spring数据jpa注释@修改,java,spring,hibernate,jpa,spring-data-jpa,Java,Spring,Hibernate,Jpa,Spring Data Jpa,我想审核所有实体修改,所以我使用了一个实现org.hibernate.Interceptor的类。但是,如果使用以下方法删除实体,则不会调用onDelete方法: 修改 @查询(“从品牌b中删除,其中b.name=:name”) public void deleteAllByName(参数(“名称”)字符串名称) 有没有办法拦截这种查询 注意:在每次此类查询之前/之后调用拦截器方法不是一个选项,因为有100多个案例,可能会编写更多 谢谢, Tekin.我找到了一个解决方案,虽然不是一个好的解决方

我想审核所有实体修改,所以我使用了一个实现org.hibernate.Interceptor的类。但是,如果使用以下方法删除实体,则不会调用onDelete方法:

修改 @查询(“从品牌b中删除,其中b.name=:name”) public void deleteAllByName(参数(“名称”)字符串名称)

有没有办法拦截这种查询

注意:在每次此类查询之前/之后调用拦截器方法不是一个选项,因为有100多个案例,可能会编写更多

谢谢,
Tekin.

我找到了一个解决方案,虽然不是一个好的解决方案,但现在就可以了:我在EmptyInterceptor(拦截器的基本实现)中重写了方法
public String onPrepareStatement(字符串查询)
,并检查查询是否以“插入”、“更新”或“删除”开头。我需要知道这一点,因为我必须将一个实体标记为已过期。不过,如果有人有更好的解决方案,请告诉我


谢谢。

为什么要发明自己的,而不使用Hibernate Envers之类的东西呢?有很多实体(其他可能由其他开发人员创建),我不想修改(在本例中,注释)每个实体。根据我所读到的关于Hibernate Envers的内容,我应该修改每个实体。我错了吗?所以你宁愿把一个解决方案拼凑在一起,然后使用一个经过验证的、经过良好测试的解决方案。唯一要做的是,您需要在需要监视的类上添加一个
@Audited
注释。你甚至可以对实体关系进行特殊审计。我同意你的观点,但这对于我的特殊情况来说不是一个有效的解决方案,因为现在有247个实体。我希望在一个地方编写一段代码,这样无论是否创建了新实体,它都将易于维护、松散耦合和工作。