1

Ehcache (2.6.0) を Hibernate (3.6.4) のセカンド レベル キャッシュとして構成しようとしています。春のコンテキストファイルに次のプロパティを設定しました

<prop key="hibernate.cache.use_second_level_cache">true</prop>
<prop key="hibernate.cache.use_query_cache">true</prop>
<prop key="hibernate.cache.region.factory_class">net.sf.ehcache.hibernate.SingletonEhCacheRegionFactory</prop>

アプリケーションを起動すると、次の例外で失敗します。java.lang.ClassCastException: net.sf.ehcache.hibernate.SingletonEhCacheRegionFactory cannot be cast to org.hibernate.cache.RegionFactory

スタックトレースは次のとおりです。

Caused by: org.hibernate.HibernateException: could not instantiate RegionFactory [net.sf.ehcache.hibernate.SingletonEhCacheRegionFactory]
    at org.hibernate.cfg.SettingsFactory.createRegionFactory(SettingsFactory.java:423)
    at org.hibernate.cfg.SettingsFactory.buildSettings(SettingsFactory.java:280)
    at org.hibernate.cfg.Configuration.buildSettingsInternal(Configuration.java:2863)
    at org.hibernate.cfg.Configuration.buildSettings(Configuration.java:2859)
    at org.hibernate.cfg.Configuration.buildSessionFactory(Configuration.java:1870)
    Caused by: java.lang.ClassCastException: net.sf.ehcache.hibernate.SingletonEhCacheRegionFactory cannot be cast to org.hibernate.cache.RegionFactory
    at org.hibernate.cfg.SettingsFactory.createRegionFactory(SettingsFactory.java:409)

私はソースを見て、それを観察しまし SingletonEhCacheRegionFactory extends AbstractEhcacheRegionFactoryAbstractEhcacheRegionFactory implements RegionFactory

SettingsFactory.java:409 のコードは

            return (RegionFactory) ReflectHelper.classForName( regionFactoryClassName )
                    .getConstructor( Properties.class )
                    .newInstance( properties );

すべてが整っているように見えますが、それでも例外が発生します。手がかりはありますか?

4

1 に答える 1

1

プロバイダー クラスを提供して試してみることができますか:

org.hibernate.cache.EhCacheProvider

また、ehCache に必要な jar が追加されていることも確認してください。

于 2013-02-06T12:20:35.343 に答える