[RESOLVIDO] Hibernate 4.1.0 + EhCache 2.5.1 (Erro no cache de 2º nível)

Pessoal.

Atualizei minha aplicação para utilizar a nova versão do Hibernate “4.1.0” e a versão do EhCache “2.5.1”, porém ao acessar minha aplicação recebo a seguinte mensagem:

org.hibernate.cache.NoCachingEnabledException: Second-level cache is not enabled for usage [hibernate.cache.use_second_level_cache | hibernate.cache.use_query_cache]

Ambos os parâmetros estão configurados como true no arquivo hibernate.cfg.xml, desta forma:

        <!-- # Cache de Segundo nivel habilitado # -->
        <property name="hibernate.cache.provider_class">org.hibernate.cache.EhCacheProvider</property>
        <property name="hibernate.cache.use_query_cache">true</property>
        <property name="hibernate.cache.use_structured_entries">true</property>
        <property name="hibernate.cache.use_second_level_cache">true</property>

Se eu coloco como false a aplicação acessa corretamente, mas “obviamente” os caches de 2º nível não estão lá para serem utilizados… :frowning:

Já procurei pela solução e até o momento não encontrei, sendo assim peço a ajuda dos estimados colegas…

NOTA: Até a versão do Hibernate 3.6.8 tudo funciona corretamente, desta forma acredito que seja uma incompatibilidade entre a versão atual “4.1.0” com o ehcache “2.5.1”.

As classes que devem estar em cache estão anotadas com:

@Cache(usage = CacheConcurrencyStrategy.NONSTRICT_READ_WRITE)

Obrigado a todos!

Reportei isso ontem. Essa mensagem está errada.

O que está faltando é configurar a impl de RegionFactory, conforme descrito aqui.

BTW, se você e outros que esbarram nesse problema puderem votar no issue, isso provavelmente fará com que ele ganhe atenção dos devs do JBoss.

[quote=mister__m]Reportei isso ontem. Essa mensagem está errada.

O que está faltando é configurar a impl de RegionFactory, conforme descrito aqui.[/quote]

Amigo, Mister M.

Muito obrigado por me orientar na solução deste problema.

De fato a documentação não esta bem clara e a mensagem não é adequada para encontrar uma solução!

Então, para os interessados, fica aqui a solução final:

        &lt;!-- # Cache de Segundo nivel habilitado (Chace de consulta repetidas) # --&gt;
        &lt;!-- &lt;property name="hibernate.cache.provider_class"&gt;org.hibernate.cache.EhCacheProvider&lt;/property&gt; --&gt;
        &lt;property name="hibernate.cache.region.factory_class"&gt;org.hibernate.cache.ehcache.EhCacheRegionFactory&lt;/property&gt;
        &lt;property name="hibernate.cache.use_query_cache"&gt;true&lt;/property&gt;
        &lt;property name="hibernate.cache.use_structured_entries"&gt;true&lt;/property&gt;
        &lt;property name="hibernate.cache.use_second_level_cache"&gt;true&lt;/property&gt;

Novamente obrigado.

NOTA: A equipe de desenvolvimento já resolveu o problema e estará disponível na versão 4.1.1.