gpt4 book ai didi

java - Hibernate Envers 条件审核,运行时忽略自定义 EnversIntegrator

转载 作者:行者123 更新时间:2023-12-02 04:58:35 27 4
gpt4 key购买 nike

我需要使用 Hibernate Envers 和 Spring 配置条件审核。

默认配置有效,但我只想审核删除操作,将删除的实体保存在审核表中。

我关注了all the documentation steps但是当我尝试使用创建和删除实体的简单 main 的应用程序时,不会调用我的 CustomEnversIntegrator,而是调用 org.hibernate.envers.event.spi.EnversIntegrator。

这是我的 spring-config.xml:

<bean id="entityManagerFactory" class="org.springframework.orm.jpa.LocalContainerEntityManagerFactoryBean">
<property name="jpaProperties">
<props>
<prop key="org.hibernate.envers.default_schema">macap_auditoria</prop>
<prop key="org.hibernate.envers.audit_table_prefix">aud_</prop>
<prop key="org.hibernate.envers.audit_table_suffix"></prop>
<prop key="org.hibernate.envers.store_data_at_delete">true</prop>
<prop key="hibernate.hbm2ddl.auto">update</prop>
<prop key="hibernate.listeners.envers.autoRegister">false</prop>
<prop key="org.hibernate.envers.cascade_delete_revision">true</prop>
</props>
</property>
......

CustomEnversIntegrator.java,仅监听删除操作:

    public class CustomEnversIntegrator extends EnversIntegrator {

private AuditConfiguration enversConfiguration;

@Override
public void integrate(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.prependListeners(EventType.POST_DELETE, new CustomEnversPostDeleteEventListener(enversConfiguration));
}
}

}

最后,我添加了文件 META-INF/services/org.hibernate.spi.Integrator里面一行:uy.com.macap.ccd.services.persistence.audit.CustomEnversIntegrator

我的.m2文件夹中生成的jar包含里面的META-INF/services/org.hibernate.spi.Integrator文件,所以我不知道除了用我修改的EnversIntegrator类重新编译envers之外还能尝试什么。

谢谢。

最佳答案

我认为问题出在 META-INF/services 下的文件名:

根据文档,它应该是org.hibernate.integrator.spi.Integrator

而不是

org.hibernate.spi.Integrator as in your post

关于java - Hibernate Envers 条件审核,运行时忽略自定义 EnversIntegrator,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28528503/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com