Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/hibernate/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 从Hibernate 5.2升级到5.3时,SingleToneCacheRegionFactory不再可用_Java_Hibernate_Ehcache - Fatal编程技术网

Java 从Hibernate 5.2升级到5.3时,SingleToneCacheRegionFactory不再可用

Java 从Hibernate 5.2升级到5.3时,SingleToneCacheRegionFactory不再可用,java,hibernate,ehcache,Java,Hibernate,Ehcache,我工作的一个项目目前正在使用Hibernate版本5.2.15.Final。配置二级缓存时,项目一直使用org.hibernate.cache.ehcache.SingletonEhCacheRegionFactory作为hibernate.cache.region.factory\u类的值 当我将Hibernate版本更改为5.3.12.Final时,SingletoneCacheRegionFactory不再在该包中。net.sf.ehcache.hibernate包中有一个同名的类,我可以

我工作的一个项目目前正在使用Hibernate版本5.2.15.Final。配置二级缓存时,项目一直使用
org.hibernate.cache.ehcache.SingletonEhCacheRegionFactory
作为
hibernate.cache.region.factory\u类的值

当我将Hibernate版本更改为5.3.12.Final时,
SingletoneCacheRegionFactory
不再在该包中。
net.sf.ehcache.hibernate
包中有一个同名的类,我可以使用它而不会出现编译错误。但如果我运行它,当它尝试构建会话时,我会得到一个错误:

org.hibernate.service.spi.ServiceException: Unable to create requested service [org.hibernate.cache.spi.RegionFactory]

    at org.hibernate.service.internal.AbstractServiceRegistryImpl.createService(AbstractServiceRegistryImpl.java:275)
    at org.hibernate.service.internal.AbstractServiceRegistryImpl.initializeService(AbstractServiceRegistryImpl.java:237)
    at org.hibernate.service.internal.AbstractServiceRegistryImpl.getService(AbstractServiceRegistryImpl.java:214)
    at org.hibernate.boot.internal.MetadataBuilderImpl$MetadataBuildingOptionsImpl.<init>(MetadataBuilderImpl.java:688)
    at org.hibernate.boot.internal.MetadataBuilderImpl.<init>(MetadataBuilderImpl.java:123)
    at org.hibernate.boot.internal.MetadataBuilderImpl.<init>(MetadataBuilderImpl.java:93)
下面是我的pom.xml依赖项的样子:

<dependency>
    <groupId>org.hibernate</groupId>
    <artifactId>hibernate-core</artifactId>
    <version>5.3.12.Final</version>
</dependency>
<dependency>
    <groupId>org.hibernate</groupId>
    <artifactId>hibernate-ehcache</artifactId>
    <version>5.3.12.Final</version>
</dependency>

<dependency>
    <groupId>net.sf.ehcache</groupId>
    <artifactId>ehcache-core</artifactId>
    <version>2.6.11</version>
    <exclusions>
        <exclusion>
            <groupId>org.slf4j</groupId>
            <artifactId>slf4j-api</artifactId>
        </exclusion>
    </exclusions>
</dependency>
<dependency>
    <groupId>org.hibernate</groupId>
    <artifactId>hibernate-c3p0</artifactId>
    <version>5.3.12.Final</version>
</dependency>

org.hibernate
冬眠核心
5.3.12.最终版本
org.hibernate
休眠ehcache
5.3.12.最终版本
net.sf.ehcache
ehcache内核
2.6.11
org.slf4j
slf4j api
org.hibernate
hibernate-c3p0
5.3.12.最终版本

好的,我想我解决了问题。以前,我的代码通过执行以下操作获取完整的类名和路径:

SingletonEhCacheRegionFactory.class.getCanonicalName()
但是在Hibernate5.3中,这个类被移动到了一个内部包中,这就是为什么我再也找不到它了。如果我使用带有旧包名的硬编码字符串(
“org.hibernate.cache.ehcache.SingletonEhCacheRegionFactory”
),我将不再获得该异常

SingletonEhCacheRegionFactory.class.getCanonicalName()