KnowledgeHub
Questions
Tags
Users
Search
Alex Rivera
|
Logout
Edit Question
Title
Body
I have a requirement where I want to audit records only on change of Status field. I've followed documentation chapter tutorial "15.8. Conditional auditing". Step 1: Turn off automatic Envers event listeners registration. I have following: <prop key="hibernate.listeners.envers.autoRegister">false</prop> Step 2: Create subclasses for appropriate event listeners. public class DeleteEnversListener extends EnversPostDeleteEventListenerImpl { private static final long serialVersionUID = 5906427978349712224L; private static Log log = LogFactory.getLog(DeleteEnversListener.class); public DeleteEnversListener(AuditConfiguration enversConfiguration) { super(enversConfiguration); } @Override public void onPostDelete(PostDeleteEvent event) { log.info("!!! just logging entity !! "+ event.getEntity()); super.onPostDelete(event); } } In similar way, I have InsertEnversListener UpdateEnversListener DeleteEnversListener CollectionRecreateEnversListener PreCollectionRemoveEnversListener PreCollectionUpdateEnversListener Step 3: Create your own implementation of org.hibernate.integrator.spi.Integrator public class CustomEnversIntegrator extends EnversIntegrator { private static Log log = LogFactory.getLog(CustomEnversIntegrator.class); @Override public void integrate(Configuration configuration, SessionFactoryImplementor sessionFactory, SessionFactoryServiceRegistry serviceRegistry) { super.integrate(configuration, sessionFactory, serviceRegistry); final AuditConfiguration enversConfiguration = AuditConfiguration.getFor( configuration, serviceRegistry.getService( ClassLoaderService.class ) ); EventListenerRegistry listenerRegistry = serviceRegistry.getService( EventL
Tags (comma-separated)
Save Edits
Cancel