我正在使用带有envers的Hibernate 4.0
当我执行update或insert操作时,数据将以模式a 0和1保存到审计表中
我想在插入后禁用审计。有没有人能告诉我怎么禁用它。
我读到hibernate从4.0版本开始,它会自动注册事件以进行审计。
有没有办法在插入时禁用审计?
发布于 2017-09-21 16:44:38
hibernate.envers.autoRegisterListeners -控制是否自动注册标准Envers侦听器。
您可以注册自定义侦听器以允许或阻止自定义事件工作。
下面是hibernate指南中的步骤:
for more detail go to link代码示例
import org.hibernate.envers.configuration.spi.AuditConfiguration;
import org.hibernate.envers.event.spi.EnversPostInsertEventListenerImpl;
import org.hibernate.event.spi.PostInsertEvent;
public class SprEnversPostInsertEventListenerImpl extends EnversPostInsertEventListenerImpl {
private static final long serialVersionUID = 1L;
public SprEnversPostInsertEventListenerImpl(AuditConfiguration enversConfiguration) {
super(enversConfiguration);
}
@Override
public void onPostInsert(PostInsertEvent event) {
super.onPostInsert(event);
}
}自定义集成器的代码示例
public class EnverseCustomIntegrator extends EnversIntegrator {
public static final String AUTO_REGISTER = "hibernate.listeners.envers.autoRegister";
private AuditConfiguration enversConfiguration;
@Override
public void integrate(org.hibernate.cfg.Configuration configuration, SessionFactoryImplementor sessionFactory, SessionFactoryServiceRegistry serviceRegistry) {
final EventListenerRegistry listenerRegistry = serviceRegistry.getService(EventListenerRegistry.class);
listenerRegistry.addDuplicationStrategy(EnversListenerDuplicationStrategy.INSTANCE);
enversConfiguration = AuditConfiguration.getFor(configuration, serviceRegistry.getService(ClassLoaderService.class));
if (enversConfiguration.getEntCfg().hasAuditedEntities()) {
listenerRegistry.appendListeners(EventType.POST_DELETE, new SprEnversPostDeleteEventListenerImpl(enversConfiguration));
listenerRegistry.appendListeners(EventType.POST_INSERT, new SprEnversPostInsertEventListenerImpl(enversConfiguration));
listenerRegistry.appendListeners(EventType.POST_UPDATE, new SprEnversPostUpdateEventListenerImpl(enversConfiguration));
listenerRegistry.appendListeners(EventType.POST_COLLECTION_RECREATE, new SprEnversPostCollectionRecreateEventListenerImpl(enversConfiguration));
listenerRegistry.appendListeners(EventType.PRE_COLLECTION_REMOVE, new SprEnversPreCollectionRemoveEventListenerImpl(enversConfiguration));
listenerRegistry.appendListeners(EventType.PRE_COLLECTION_UPDATE, new SprEnversPreCollectionUpdateEventListenerImpl(enversConfiguration));
}
}
}持久化上下文配置
<property name="hibernate.integration.envers.enabled" value="true"/>
<property name="hibernate.envers.autoRegisterListeners" value="true"/>src/main/resources/META-INF/services/org.hibernate.integrator.spi.Integrator内容示例为:
mycustom.audit.package.audit.EnverseCustomIntegrator发布于 2017-04-18 12:58:52
删除
@Audited 实体上的注解,如果它们出现在实体类/字段names.If上,您有自定义的表来存储审核日志,请删除这些实体
https://stackoverflow.com/questions/43456454
复制相似问题