2016-08-29 15 views
0

Hibernate無効なクエリキャッシュが機能しません。 クエリを実行するたびに、検索によって前のクエリデータが返されます。 私はインターネットのいくつかの例を試しましたが、誰も私のために働いていませんでした。Hibernateが無効なクエリキャッシュを無効にします。

私はすでにこの設定を試しています。私JPAUtilクラス

public class JpaUtil { 

private static final EntityManagerFactory emf; 
private static final ThreadLocal<EntityManager> threadLocal; 

static { 
    emf = Persistence.createEntityManagerFactory("simuladosPU"); 
    emf.getCache().evictAll(); 
    threadLocal = new ThreadLocal<EntityManager>(); 
} 

public static EntityManager getEntityManager() { 
    EntityManager em = threadLocal.get(); 
    if (em == null) { 
     em = emf.createEntityManager(); 
     threadLocal.set(em); 
    } 
    return em; 
} 

public static void closeEntityManager() { 
    EntityManager em = threadLocal.get(); 
    if (em != null) { 
     em.close(); 
     threadLocal.set(null); 
    } 
} 

<properties> 

     <!-- Nao remover AutoReconect=true --> 
     <property name="javax.persistence.jdbc.url" 
      value="jdbc:mysql://localhost:3307/teste?autoReconnect=true" /> 
     <property name="javax.persistence.jdbc.user" value="teste" /> 
     <property name="javax.persistence.jdbc.password" value="teste" /> 
     <property name="javax.persistence.jdbc.driver" value="com.mysql.jdbc.Driver" /> 
     <property name="hibernate.dialect" value="org.hibernate.dialect.MySQL5InnoDBDialect" /> 

     <!-- validate | update | create | create-drop --> 
     <property name="connection.useUnicode" value="true" /> 
     <property name="connection.characterEncoding" value="uf-8" /> 
     <property name="hibernate.hbm2ddl.auto" value="update" /> 
     <property name="hibernate.show_sql" value="true" /> 
     <property name="hibernate.format_sql" value="true" /> 

     <property name="hibernate.cache.use_second_level_cache" 
      value="false" /> 
     <property name="hibernate.cache.use_query_cache" value="false" /> 
     <property name="javax.persistence.sharedCache.mode" value="NONE" /> 
     <property name="org.hibernate.cacheable" value="false" /> 

     <!-- C3P0 --> 
     <property name="hibernate.connection.driver_class" value="com.mysql.jdbc.Driver" /> 
     <property name="connection.provider_class" 
      value="org.hibernate.connection.C3P0ConnectionProvider" /> 

     <property name="hibernate.c3p0.validate" value="true" /> 
     <property name="hibernate.c3p0.acquire_increment" value="5" /> 
     <property name="hibernate.c3p0.min_size" value="5" /> 
     <property name="hibernate.c3p0.max_size" value="40" /> 
     <property name="hibernate.c3p0.max_statements" value="0" /> 
     <property name="hibernate.c3p0.testConnectionOnCheckout" 
      value="true" /> 
     <property name="hibernate.c3p0.preferredTestQuery" value="SELECT 1" /> 
     <property name="hibernate.c3p0.idle_test_period" value="100" /> 

    </properties> 

</persistence-unit> 

私はこのクエリキャッシュを無効にするために必要か?

答えて

0

クエリヒントを使用してください。

という名前のクエリで使用例: em.createNamedQuery( "MyLocation.myExampleNamedQuery")setHint(QueryHints.CACHE_USAGE、CacheUsage.DoNotCheckCache).getResultList()(0)を取得。。。

結果と幸運をお知らせください。

+0

これでは動作しませんが、私はそれを探して見つけてください.setHint( "org.hibernate.cacheable"、false)。答えをありがとう – Felipe

関連する問題