Solucionado (ver solução)
Solucionado
(ver solução)
3
respostas

Erro na utilização de hibernate-ehcache

Estou utilizando a versão 5.2.18.Final do hibernate e estou tentando utilizar a biblioteca de cache de segundo nível hibernate-ehcache e quando uma consulta é realizada acontece o seguinte erro:

Caused by: java.lang.AbstractMethodError: org.hibernate.cache.ehcache.internal.regions.EhcacheQueryResultsRegion.get(Lorg/hibernate/engine/spi/SessionImplementor;Ljava/lang/Object;)Ljava/lang/Object;
    at org.hibernate.cache.internal.StandardQueryCache.getCachedResults(StandardQueryCache.java:242)
    at org.hibernate.cache.internal.StandardQueryCache.get(StandardQueryCache.java:158)
    at org.hibernate.loader.Loader.getResultFromQueryCache(Loader.java:2546)
    at org.hibernate.loader.Loader.listUsingQueryCache(Loader.java:2454)
    at org.hibernate.loader.Loader.list(Loader.java:2426)
    at org.hibernate.loader.hql.QueryLoader.list(QueryLoader.java:501)
    at org.hibernate.hql.internal.ast.QueryTranslatorImpl.list(QueryTranslatorImpl.java:370)
    at org.hibernate.engine.query.spi.HQLQueryPlan.performList(HQLQueryPlan.java:216)
    at org.hibernate.internal.SessionImpl.list(SessionImpl.java:1339)
    at org.hibernate.internal.QueryImpl.list(QueryImpl.java:87)
    at org.hibernate.jpa.internal.QueryImpl.list(QueryImpl.java:606)
    at org.hibernate.jpa.internal.QueryImpl.getSingleResult(QueryImpl.java:529)

Pelo que andei pesquisando acontece um conflito da classe EhcacheQueryResultsRegion entre as bibliotecas hibernate-ehcache e net.sf.ehcache.ehcache, as duas bibliotecas possuem esta mesma classe, porém as assinaturas dos métodos são diferentes, sendo que a própria bilbioteca do hibernate-ehcache importa a bilbioteca net.sf.ehcache.ehcache.

Segue a configuração do hibernate no meu pom.xml:

<dependency>
    <groupId>org.hibernate</groupId>
    <artifactId>hibernate-core</artifactId>
    <version>5.2.18.Final</version>
</dependency>

<dependency>
    <groupId>org.hibernate</groupId>
    <artifactId>hibernate-entitymanager</artifactId>
    <version>5.2.18.Final</version>
    <exclusions>
        <exclusion>
            <groupId>antlr</groupId>
            <artifactId>antlr</artifactId>
        </exclusion>
    </exclusions>
</dependency>

<dependency>
    <groupId>org.hibernate</groupId>
    <artifactId>hibernate-jpamodelgen</artifactId>
    <version>4.3.11.Final</version>
    <exclusions>
        <exclusion>
            <groupId>org.hibernate.javax.persistence</groupId>
            <artifactId>hibernate-jpa-2.0-api</artifactId>
        </exclusion>
    </exclusions>
</dependency>

<dependency>
    <groupId>org.hibernate</groupId>
    <artifactId>hibernate-ehcache</artifactId>
    <version>5.2.18.Final</version>
</dependency>
3 respostas

Oi Vinicius! Tudo bem?

Consegue executar um comando do maven?

Se sim, faz um mvn dependency:tree e cola o resultado para eu tentar ajudar, por favor.

Esse comando mostrará a stack de dependências e assim fica mais fácil ver qual dependência conflita com qual.

Abraço e fico no aguardo.

Rodrigo

Fala Vini, tudo bem?

Algum motivo em especial para deixar o hibernate-jpamodelgen numa versão diferente das demais?

Tenta atualiza-lo para a 5.2.18.Final também.

solução!

Opa, consegui resolver o problema alterando uma propriedade no persistence.xml.

Realizei o seguinte ajuste:

<property name="hibernate.cache.region.factory_class" value="org.jboss.as.jpa.hibernate5.infinispan.SharedInfinispanRegionFactory"/>

Achei essa solução no seguinte link: https://developer.jboss.org/message/962840#962840

Obrigado pela ajuda de todos.

Quer mergulhar em tecnologia e aprendizagem?

Receba a newsletter que o nosso CEO escreve pessoalmente, com insights do mercado de trabalho, ciência e desenvolvimento de software