Hibernate, AuditLogging, cannot configure listeners in persistence.xml

First, what's my goal

I want to do an audit log. I read the http://www.hibernate.org/318.html and there two different approaches were mentioned.

The first is using a Listener.

The second is using the new eventing model in Hibernate3.

The author said that he couldn't make the eventing approach work for an unknown reason.

I'm using Hibernate via JPA. I'm using it in an EJB. So the problem
with the first approach is that it is difficult (if possilbe) to supply
the same transaction to the interceptor so that it can write an entry
in the audit log. There is a solution with a static field holding a
session or an EM, but that seems ugly.

So I chose the second approach. I created a class, inherited few
eventhandlers (PreInsertEventListener, PostUpdateEventListener ) and
tried to add the class as a listener.

Using the API, it worked (the callback methods in the listeners were called):

AnnotationConfiguration configuration = new AnnotationConfiguration();


configuration.setListener( "post-update", new Test1() );

configuration.addProperties( hibernateProperties );

EntityManagerFactory factory = new EntityManagerFactoryImpl( configuration.buildSessionFactory(),

  
PersistenceUnitTransactionType.RESOURCE_LOCAL, true );

EntityManager result = factory.createEntityManager();

Using properties (as if using persistence.xml) failed(the callback methods in the listeners were NOT called):

Properties hibernateProperties = new Properties();

...

hibernateProperties.put( "hibernate.ejb.event.pre-update", "package.Test1" );

hibernateProperties.put( "hibernate.ejb.event.pre-insert", "package.Test1" );

 
AnnotationConfiguration configuration = new AnnotationConfiguration();

configuration.addProperties( hibernateProperties );

EntityManagerFactory factory = new EntityManagerFactoryImpl( configuration.buildSessionFactory(),

  
PersistenceUnitTransactionType.RESOURCE_LOCAL, true );

EntityManager result = factory.createEntityManager();

Ideas why?

3 thoughts on “Hibernate, AuditLogging, cannot configure listeners in persistence.xml”

  1. hibernate.ejb.event.<eventtype> Event listener list for a given eventtype.

    The list of event listeners is a comma separated fully qualified class name list (eg. hibernate.ejb.event.pre-load com.acme.SecurityListener, com.acme.AuditListener)

  2. Good afternoon. I don't believe in intuition. When you get sudden flashes of perception, it is just the brain working faster than usual. But you've been getting ready to know it for a long time, and when it comes, you feel you've known it always.
    I am from Zambia and learning to write in English, tell me right I wrote the following sentence: "Readthis layout occurs irish luck, one of playtech's hole point lot opportunities, online poker."

    With love :-(, Latif.

Leave a Reply

Your email address will not be published. Required fields are marked *

Notify me of followup comments via e-mail. You can also subscribe without commenting.