Search code examples
mysqlhibernatemongodbgrailsgrails-orm

HibernateEventListeners not catching events


I have a grails project using GORM.

I need to post-insert events using hibernates event listener. Here is my class

class PersistenceListener implements PostInsertEventListener {

@Override
void onPostInsert(PostInsertEvent postInsertEvent) {
    println("postInsert")
    println(postInsertEvent)
    println(postInsertEvent.entity)
}

And here is my resources.xml : beans = {

persistenceListener(PersistenceListener)

hibernateEventListeners(HibernateEventListeners) {
  listenerMap = ['post-insert': persistenceListener]
}

}

I have two datastores. One is using mysql and one is using mongodb. The strange thing is that the listener is catching the events going to mysql but isn't catching the mongodb events. I have no idea why. Cn anyone shed some light on the issue? Maybe its because I have two datastores?


Solution

  • GORM doesn't use Hibernate to talk to MongoDB, so unfortunately you won't be able use Hibernate's event listener API to hook into MongoDB persistence events.

    There's another stackoverflow question here that demonstrates how to register listeners for arbitrary GORM events. Perhaps you could try something like that?