一尘不染

如何从我的审核表中删除条目?

hibernate

我目前正在使用Hibernate Envers。

如何删除审核表中与我要删除的实体相关的条目?我的实体与其他实体没有任何关系。

我发现必须在onPostDelete自定义侦听器的方法中执行此操作:

import org.hibernate.envers.event.AuditEventListener;
import org.hibernate.event.PostCollectionRecreateEvent;
import org.hibernate.event.PostDeleteEvent;
import org.hibernate.event.PostInsertEvent;
import org.hibernate.event.PostUpdateEvent;
import org.hibernate.event.PreCollectionRemoveEvent;
import org.hibernate.event.PreCollectionUpdateEvent;

public class MyListener extends AuditEventListener {

  ...
  @Override
  public void onPostDelete(PostDeleteEvent arg0) {
    // TODO Auto-generated method stub
    super.onPostDelete(arg0);
  }
  ...

}

我已经阅读了文档,论坛以及许多内容,但我无法弄清楚。也许这是不可能的,我不知道。

有人做过吗?


阅读 313

收藏
2020-06-20

共1个答案

一尘不染

好吧,对于那些想知道的人,我已经完成了50%。

感谢Hibernate Envers的创建者Adam Warski,我引用:

“ id”是实体ID的hibernate关键字,无论名称是什么;对于审核实体,该ID是复合的,称为“ originalId”。尝试:

"delete from full.package.name.User_AUD u where u.originalId.id = :userid"

但是现在,我也想删除revinfo表中与audit表相关的条目。

如果有人有线索,请告诉我。

2020-06-20