9

我正在尝试将应用程序从 Hibernate 3 升级到 Hibernate 4。该应用程序使用 ehcache。

升级到 Hibernate 4.2.0.Final 时,我按照建议添加了对 hibernate-ehcache-4.2.0.Final 的依赖。

当我启动应用程序时,我收到以下错误:

Caused by: java.lang.NoClassDefFoundError: org/hibernate/cache/TimestampsRegion

根据http://www.javacraft.org/2012/03/migrate-to-hibernate-4-ehcache.html我应该删除对 ehcache-core 的依赖,只使用 hibernate 提供的 jar 来解决这个错误。

现在,如果我按照这些说明删除此依赖项,我使用 net.sf.ehcache.CacheManager 的应用程序将不再编译。

// For example, this no-longer works
CacheManager manager = CacheManager.getInstance();

所以我的问题是,我可以使用这两个库并像以前一样继续工作(不更新应用程序),还是我必须更改应用程序,在这种情况下,hibernate-ehcache 甚至提供访问缓存所需的功能?

4

2 回答 2

20

使用 Hibernate 4 时,您必须使用 org.hibernate 打包类。net.sf.ehcache的目标是 Hibernate 3。

Form 4 他们直接在 Hibernate repo 中移植到 4(在我们看来,这是最明智的做法)。

所以使用org.hibernate.cache.ehcache.EhCacheRegionFactory应该可以解决您的问题。

于 2013-07-10T19:41:55.677 回答
0

检查您的项目中是否有任何 .properties 文件,如 hsqlDatabaseConfig.properties,尝试更新属性如下

sessionFactory.hibernateProperties = hibernate.cache.use_second_level_cache=true\n\
                                     hibernate.cache.use_query_cache=true\n\
                              hibernate.cache.region.factory_class=org.hibernate.cache.ehcache.internal.EhcacheRegionFactory\n\
于 2019-08-20T09:41:06.163 回答