Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/382.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何在JBoss 7.1.1中启用查询缓存_Java_Caching_Jpa_Jboss_Infinispan - Fatal编程技术网

Java 如何在JBoss 7.1.1中启用查询缓存

Java 如何在JBoss 7.1.1中启用查询缓存,java,caching,jpa,jboss,infinispan,Java,Caching,Jpa,Jboss,Infinispan,我曾在JBoss7.1.1中尝试过启用查询缓存,但运气不好 我在代码中添加了以下内容: TypedQuery<Currency> query = entityManager.createNamedQuery("getCurrency",Currency.class); query.setParameter("code", code); query.setHint("javax.persistence.cache.storeMode", CacheStoreMode.REFRESH);

我曾在JBoss7.1.1中尝试过启用查询缓存,但运气不好 我在代码中添加了以下内容:

TypedQuery<Currency> query = entityManager.createNamedQuery("getCurrency",Currency.class);
query.setParameter("code", code);
query.setHint("javax.persistence.cache.storeMode", CacheStoreMode.REFRESH);
query.setHint("javax.persistence.cache.retrieveMode", CacheRetrieveMode.USE);
query.setHint("org.hibernate.cacheable", true); 
我的persistence.xml中包含以下内容:

<persistence-unit name="cache_persistence">
    <provider>org.hibernate.ejb.HibernatePersistence</provider>

    <jta-data-source>java:jboss/datasources/cache</jta-data-source>
    <class>com.unwire.cache.model.CacheTest</class>
    <shared-cache-mode>ENABLE_SELECTIVE</shared-cache-mode>
    <properties>
     <property name="hibernate.show_sql" value="false" />
     <property name="hibernate.hbm2ddl.auto" value="none" />
     <property name="hibernate.cache.use_second_level_cache" value="true"/>
     <property name="hibernate.cache.use_query_cache" value="true"/>
     <property name="hibernate.generate_statistics" value="true"/>
    </properties>

</persistence-unit>

org.hibernate.ejb.HibernatePersistence
java:jboss/datasources/cache
com.unwire.cache.model.CacheTest
启用\u选择性
当我在服务器上运行war文件时 实体已缓存,但从未使用查询缓存

我在这里上传了文件:

在我的代码中(ear存档,但这不会有什么区别),我只是:

query.setHint("org.hibernate.cacheable", true); 
query.setHint("org.hibernate.cacheMode", "NORMAL"); 

启用\u选择性

没有任何额外的东西(比如你有),它就可以工作了。当然,您必须根据查询的相同参数测试缓存。

好的,我也尝试了org.hibernate.cacheable作为唯一的提示。没有luckI使用正确的数据源和表运行war文件。并执行当前在currency表中查找DKK的命令。您可以看到,每次在同一JTA会话/事务中调用该SQL时都会调用它(使用相同的参数)。还检查到达DB层的SQL查询(不确定hibernate显示的记录的SQL查询)。在jboss社区中找到了答案,我在那里提出了问题:query.setHint(“org.hibernate.cacheable”,true);setHint(“org.hibernate.cacheMode”,“NORMAL”);忘了贴了,现在已经解决了
query.setHint("org.hibernate.cacheable", true); 
query.setHint("org.hibernate.cacheMode", "NORMAL"); 
<shared-cache-mode>ENABLE_SELECTIVE</shared-cache-mode>
  <properties>
  <property name="hibernate.cache.use_second_level_cache" value="true"/>
  <property name="hibernate.cache.use_query_cache" value="true"/>
  <property name="hibernate.generate_statistics" value="true" />
</properties>