我想审核所有实体修改,所以我使用了一个实现org.hibernate.Interceptor的类。但是如果我使用这种方法删除实体(或实体),则不会调用onDelete方法:
@Modifying
@Query ("delete from Brand b where b.name= :name")
public void deleteAllByName(Param("name") String name);
有没有办法拦截这种查询?
P.S。:在每次这种查询之前/之后调用拦截器方法不是一种选择,因为有超过100个案例,可能会写更多案例。
谢谢, 特勤。
答案 0 :(得分:0)
我找到了一个解决方案,而不是一个很好的解决方案,但它现在会做:我在EmptyInterceptor(Interceptor的基本实现)中覆盖方法public String onPrepareStatement(String query)
并检查查询是否以'insert'开头,'更新'或'删除'。我需要知道这一点,因为我必须将实体标记为已过期。不过,如果有人有更好的解决方案,请告诉我。
谢谢。