问题:即使对于我使用beforeDelete()否决了删除的实体,也会调用PostDeleteEventListeners。
我正在尝试对我的实体进行软删除,同时还使用Grails Envers plugin进行审核。 Envers通过注册Hibernate PostDeleteEventListener来工作。我现在可以使用Grails方便的beforeDelete()动态域对象方法软删除我的实体。该方法似乎允许通过返回false值来否决删除请求。所以这里是我所拥有的简化视图:
def beforeDelete() { false }
上面的代码可以防止我的实体被物理删除,但是Envers的PostDeleteEventListener仍然被调用,并且它错误地记录了实体实际被删除的事实,而事实上它并没有被删除。
我做错了什么?这是Grails问题,还是PostDeleteEventListeners可以收到被否决的请求?如果后者请解释如何检测这个被否决的案件,谢谢。