拦截弹簧数据jpa注释@Modifying

时间:2014-09-24 11:48:16

标签: java spring hibernate jpa spring-data-jpa

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

@Modifying @Query ("delete from Brand b where b.name= :name") public void deleteAllByName(Param("name") String name);

有没有办法拦截这种查询?

P.S。:在每次这种查询之前/之后调用拦截器方法不是一种选择,因为有超过100个案例,可能会写更多案例。

谢谢, 特勤。

1 个答案:

答案 0 :(得分:0)

我找到了一个解决方案,而不是一个很好的解决方案,但它现在会做:我在EmptyInterceptor(Interceptor的基本实现)中覆盖方法public String onPrepareStatement(String query)并检查查询是否以'insert'开头,'更新'或'删除'。我需要知道这一点,因为我必须将实体标记为已过期。不过,如果有人有更好的解决方案,请告诉我。

谢谢。

相关问题