WildFly8.2.0.Final,Hibernate,Infinispan:org.hibernate.cache.CacheException:不支持的访问类型[读写]

时间:2015-02-24 00:46:41

标签: hibernate wildfly-8 infinispan jpa-2.1

我正试图从似乎运行良好的ehcache切换到'本地'Wildfly的Infinispan。我没有对WildFly的默认配置进行任何更改,而且我正在使用hibernate和infinispan内置模块。 我开始使用基本的持久性配置,如:

    <persistence-unit name="frmwrkjta" transaction-type="JTA">
      <provider>org.hibernate.ejb.HibernatePersistence</provider>
      <jta-data-source>java:jboss/ds/frmwrkmysqljta</jta-data-source>

      <shared-cache-mode>ENABLE_SELECTIVE</shared-cache-mode><!-- ALL, NONE, ENABLE_SELECTIVE,DISABLE_SELECTIVE, UNSPECIFIED -->
      <properties>
         <property name="shared-cache-mode" value="ENABLE_SELECTIVE" /> 
<!--         <property name="hibernate.cache.region.factory_class" value="org.hibernate.cache.ehcache.EhCacheRegionFactory"/> -->
         <property name="net.sf.ehcache.configurationResourceName" value="META-INF/ehcache-persistence.xml" />
         <property name="hibernate.cache.use_query_cache" value="true" />
         <property name="hibernate.cache.use_second_level_cache" value="true" />
         <property name="hibernate.generate_statistics" value="true" />
         <property name="hibernate.cache.infinispan.statistics" value="true" />
         <property name="hibernate.dialect" value="org.hibernate.dialect.MySQL5Dialect" />
<!--          <property name="hibernate.hbm2ddl.auto" value="update" /> -->
         <property name="hibernate.hbm2ddl.auto" value="validate" />
         <property name="hibernate.show_sql" value="true" />
         <property name="org.hibernate.envers.audit_table_suffix" value="_log" />
         <property name="org.hibernate.envers.revision_field_name" value="dbrevision_r" />
         <property name="org.hibernate.envers.revision_type_field_name" value="dbrevtype" />
      </properties>
    </persistence-unit>

后来我试图添加googled属性......

  • 第一个是我最喜欢的:

         <property name="hibernate.cache.default_cache_concurrency_strategy" value="read-only"/>
    

之后还使用了所有可选值,例如transactionalread-onlynontrict read-write,甚至read-write;)

  • 然后:

         <property name="hibernate.cache.infinispan.container" value="hibernate"/>
    
  • 后:

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

所有这些都以失败的部署异常结束:

org.hibernate.cache.CacheException: Unsupported access type [read-write]

我在实体中仅使用JPA的@Cacheable注释......

我错过了什么,我做错了什么?

编辑:

不确定是否重要。我正在添加省略的persistence.xml开头...我正在尝试使用JPA2.1:

<?xml version="1.0" encoding="UTF-8"?>
<persistence xmlns="http://xmlns.jcp.org/xml/ns/persistence"
             xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
             xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/persistence http://xmlns.jcp.org/xml/ns/persistence/persistence_2_1.xsd" version="2.1">

1 个答案:

答案 0 :(得分:3)

Infinispan Hibernate 2LC仅支持read-onlytransactional策略。我们计划添加read-writenon-strict-read-write,但我们还没有这样做。

不需要添加hibernate.cache.infinispan.containerhibernate.cache.region.factory_class属性。

我建议您从这样的简单配置开始:

<?xml version="1.0" encoding="UTF-8"?>
<persistence xmlns="http://java.sun.com/xml/ns/persistence" version="1.0">
<persistence-unit name="frmwrkjta">
   <description>example of enabling the second level cache.</description>
   <jta-data-source>java:jboss/ds/frmwrkmysqljta</jta-data-source>
   <shared-cache-mode>ENABLE_SELECTIVE</shared-cache-mode>
   <properties>
      <property name="hibernate.cache.use_second_level_cache" value="true"/>
   </properties>
</persistence-unit>
</persistence> 

然后根据需要添加属性,例如如果需要......等,启用查询缓存