我已阅读与此相关的帖子,但没有得到任何答案为我工作.我配置second level cache
的Hibernate v4.3.
,我已经使用MySQL 5.0
我写过以下内容 hibernate.cfg.xml
true org.hibernate.cache.ehcache.EhCacheRegionFactory
我已经为缓存注释了我的Entity类,如下所示
@Entity @Cache(usage = CacheConcurrencyStrategy.READ_ONLY) public class Employee { ....}
运行时会显示以下异常
INFO: HHH000397: Using ASTQueryTranslatorFactory Exception in thread "main" org.hibernate.service.spi.ServiceException: Unable to create requested service [org.hibernate.cache.spi.RegionFactory] at org.hibernate.service.internal.AbstractServiceRegistryImpl.createService(AbstractServiceRegistryImpl.java:233) at org.hibernate.service.internal.AbstractServiceRegistryImpl.initializeService(AbstractServiceRegistryImpl.java:197) at org.hibernate.service.internal.AbstractServiceRegistryImpl.getService(AbstractServiceRegistryImpl.java:178) at org.hibernate.cfg.SettingsFactory.buildSettings(SettingsFactory.java:295) at org.hibernate.cfg.Configuration.buildSettingsInternal(Configuration.java:2442) at org.hibernate.cfg.Configuration.buildSettings(Configuration.java:2438) at org.hibernate.cfg.Configuration.buildSessionFactory(Configuration.java:1855) at com.example.hibernate.Hibernate4Main.main(Hibernate4Main.java:32) Caused by: org.hibernate.HibernateException: could not instantiate RegionFactory [org.hibernate.cache.ehcache.EhCacheRegionFactory] at org.hibernate.cache.internal.RegionFactoryInitiator.initiateService(RegionFactoryInitiator.java:101) at org.hibernate.cache.internal.RegionFactoryInitiator.initiateService(RegionFactoryInitiator.java:46) at org.hibernate.boot.registry.internal.StandardServiceRegistryImpl.initiateService(StandardServiceRegistryImpl.java:83) at org.hibernate.service.internal.AbstractServiceRegistryImpl.createService(AbstractServiceRegistryImpl.java:223) ... 7 more Caused by: org.hibernate.boot.registry.selector.spi.StrategySelectionException: Unable to resolve name [org.hibernate.cache.ehcache.EhCacheRegionFactory] as strategy [org.hibernate.cache.spi.RegionFactory] at org.hibernate.boot.registry.selector.internal.StrategySelectorImpl.selectStrategyImplementor(StrategySelectorImpl.java:128) at org.hibernate.cache.internal.RegionFactoryInitiator.initiateService(RegionFactoryInitiator.java:87) ... 10 more
我见过比有不同的缓存提供了Hibernate v3
像EhCacheProvoider
.一切都在org.hibernate.cache
包装中.但因为Hibernate 4.3
只有3个类,RegionFactory.class
而其他两个类exception
.
1.上述代码有什么问题?
2. Hibernate 4.3中二级缓存配置的主要变化是什么?
我为我的配置解决了这个问题.查看我项目的"有效pom"显示:
<dependencyManagement> <dependencies> ... <dependency> <groupId>org.hibernate</groupId> <artifactId>hibernate-ehcache</artifactId> <version>4.3.7.Final</version> </dependency> ... </dependencies> </dependencyManagement>
以及我的大多数其他依赖项.
将hibernate-ehcache依赖项复制到我的实际项目pom文件中,在<dependencyManagement/>
标记之外添加了第二个条目,这解决了我的问题.我曾经想过,因为它已经包含在有效的pom中,我不需要添加它,但显然不是hibernate-ehcache的情况,因为它似乎适用于其他包.