Grails 2.4 + Hibernate 4 + Plugin de búsqueda = ClassNotFoundException: org.hibernate.impl.SessionFactoryImpl

Recientemente estaba integrando una aplicación simple de Grails con el plugin de búsqueda. Lo que encontré fue que el plugin de búsqueda no funciona con la biblioteca Hibernate 4.

Aquí puede encontrar una aplicación de muestra que contiene solo la aplicación limpia de Grails 2.4 con solo el complemento de búsqueda agregado:https://github.com/wololock/grails-searchable-example

Cuando ejecuto esta aplicación con:

runtime ":hibernate4:4.3.5.5"

dependencia, no comenzará y arroja una excepción:

ClassNotFoundException: org.hibernate.impl.SessionFactoryImpl

Lo que ya he encontrado es que en Hibernate4 SessionFactoryImpl se movió al paquete org.hibernate.internal y parece que Compass busca esta clase en la ubicación anterior:

2014-10-11 19:41:58,142 [localhost-startStop-1] ERROR context.GrailsContextLoaderListener  - Error initializing the application: org/hibernate/impl/SessionFactoryImpl
Message: org/hibernate/impl/SessionFactoryImpl
Line | Method
->>   95 | injectLifecycle in org.compass.gps.device.hibernate.lifecycle.DefaultHibernateEntityLifecycleInjector

Volviendo a:

runtime ":hibernate:3.6.10.17"

y cambiando

cache.region.factory_class = 'net.sf.ehcache.hibernate.EhCacheRegionFactory'

en el DataSource.groovy resuelve el problema.

Mi pregunta es: ¿Hay alguna solución para usar el complemento de búsqueda con Hibernate 4 o tenemos que esperar o solucionar el problema en el código fuente de Compass / Searchable? ¿Cómo lidiaste con ese problema en tu aplicación Grails? Estaré agradecido por tus consejos.

Respuestas a la pregunta(2)

Su respuesta a la pregunta