使用Hibernate 5.3.1遇JCache缓存对象动态创建不支持问题求助
解决Hibernate 5.3.1 + Ehcache 2.x 报错“On-the-fly creation of JCache Cache objects is not supported”
问题原因
Hibernate 5.3.x 版本中,hibernate-ehcache 组件默认基于 JCache(JSR-107)规范 实现,但你使用的 Ehcache 2.10.3 是旧版实现,不支持 JCache 的动态缓存对象创建逻辑,因此触发该错误。
解决方案
有两种可行方案,按需选择:
方案1:升级Ehcache到支持JCache的版本(推荐)
- 移除旧版的
ehcache-2.10.3依赖 - 添加 Ehcache 3.x 版本(比如
ehcache-3.8.1,确保与Hibernate 5.3.1兼容) - 补充 JCache API 依赖:
javax.cache-api-1.1.1(Hibernate 5.3需要该API包对接JCache实现)
方案2:强制Hibernate使用旧版Ehcache区域工厂
若不想升级Ehcache,可在Hibernate配置中明确指定旧的Ehcache实现类,绕过JCache逻辑:
在hibernate.cfg.xml中添加:
<property name="hibernate.cache.region.factory_class">org.hibernate.cache.ehcache.EhCacheRegionFactory</property>
或在persistence.xml中配置:
<property name="hibernate.cache.region.factory_class" value="org.hibernate.cache.ehcache.EhCacheRegionFactory"/>
额外注意:Java 11环境下,建议将slf4j-api升级到1.7.30+版本,避免潜在兼容性问题。
内容的提问来源于stack exchange,提问作者MAdhuri
相关产品推荐
相关产品推荐

