Boa noite caros, também estou tendo problemas para colocar o ehcache para funcionar (query cache) na minha aplicação web. Acho que está faltando alguma configuração específica, pois com a configuração atual, ao rodar uma classe java simples com um método main, o resultado mostra que o cache está funcionando corretamente. Nesta classe executo uma query a primeira vez
cidades = em.createQuery("select c from Cidade c").setHint("org.hibernate.cacheable", true).getResultList();
em seguida executo um update via jdbc na entidade, e por último executo a query novamente. O resultado é o esperado, a query esta sendo cacheada pois o
resultado da segunda chamada é o mesmo da primeira, apesar de 1 dos objetos ter sido atualizado via jdbc…
Porém na aplicação web não ocorre o esperado. Esta mesma query encontra-se em um método de um EJB, e é invocada ao carregar uma página. O teste que estou fazendo é simples: carrego a página e vejo a lista, em seguida faço update no banco de dados e recarrego a página, que me mostra os registros alterados.
Acho que o cache está durando somente durante a vida do EntityManager. Ao fazer um novo teste na classe citada anteriormente, porém fechando o EntityManager via em.close(), e obtendo uma nova instância para 2 execução da query, o resultado mostra os registros alterados conforme o update via jdbc…
Bem espero ter sido claro hehehe, grato por qualquer ajuda.
persistence.xml
<?xml version="1.0" encoding="UTF-8"?>
<persistence version="1.0" xmlns="http://java.sun.com/xml/ns/persistence" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/persistence http://java.sun.com/xml/ns/persistence/persistence_1_0.xsd">
<persistence-unit name="dho-jee6-ejbPU" transaction-type="JTA">
<provider>org.hibernate.ejb.HibernatePersistence</provider>
<jta-data-source>mySql-Dho-Ds</jta-data-source>
<class>br.com.dho.model.entity.Cidade</class>
<exclude-unlisted-classes>true</exclude-unlisted-classes>
<properties>
<property name="hibernate.cache.provider_class" value="org.hibernate.cache.EhCacheProvider"/>
<property name="hibernate.cache.use_second_level_cache" value="true"/>
<property name="hibernate.cache.use_query_cache" value="true"/>
<property name="hibernate.show_sql" value="true"/>
<property name="hibernate.format_sql" value="true"/>
</properties>
</persistence-unit>
</persistence>
[]s.