Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/spring-mvc/2.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
Spring mvc 迁移到Hibernate 5.2时出现错误,原因是:org.Hibernate.HibernateException:无法确定类的类型:java.util.Collection_Spring Mvc_Spring Data Jpa_Jpa 2.1_Hibernate 5.x - Fatal编程技术网

Spring mvc 迁移到Hibernate 5.2时出现错误,原因是:org.Hibernate.HibernateException:无法确定类的类型:java.util.Collection

Spring mvc 迁移到Hibernate 5.2时出现错误,原因是:org.Hibernate.HibernateException:无法确定类的类型:java.util.Collection,spring-mvc,spring-data-jpa,jpa-2.1,hibernate-5.x,Spring Mvc,Spring Data Jpa,Jpa 2.1,Hibernate 5.x,我正在使用spring项目。这是我的POM代码片段 ..... <!-- Spring Data module for JPA repositories. --> <dependency> <groupId>org.springframework.data</groupId> <artifactId>spring-data-jpa</artifactId> <version>${sprin

我正在使用spring项目。这是我的POM代码片段

.....
<!-- Spring Data module for JPA repositories. -->
<dependency>
    <groupId>org.springframework.data</groupId>
    <artifactId>spring-data-jpa</artifactId>
    <version>${spring-data-jpa.version}</version>  //1.10.1.RELEASE
    <scope>compile</scope>
    <exclusions>
        <exclusion>
            <groupId>org.slf4j</groupId>
            <artifactId>jcl-over-slf4j</artifactId>
        </exclusion>
    </exclusions>
</dependency>

<dependency>
    <groupId>org.eclipse.persistence</groupId>
    <artifactId>javax.persistence</artifactId>
    <version>${javax.persistence.version}</version>  //2.1.1
    <scope>compile</scope>
</dependency>

<!-- Hibernate entity manager with JPA 2 support. 
<dependency>
    <groupId>org.hibernate</groupId>
    <artifactId>hibernate-entitymanager</artifactId>
    <version>${hibernate-entitymanager.version}</version>  // 5.1.0.Final
    <scope>runtime</scope>
    <exclusions>
        <exclusion>
            <groupId>org.hibernate.javax.persistence</groupId>
            <artifactId>hibernate-jpa-2.1-api</artifactId>
        </exclusion>
        <exclusion>
            <groupId>org.jboss.spec.javax.transaction</groupId>
            <artifactId>jboss-transaction-api_1.2_spec</artifactId>
        </exclusion>
        <exclusion>
            <groupId>xml-apis</groupId>
            <artifactId>xml-apis</artifactId>
        </exclusion>
        <exclusion>
            <groupId>org.jboss.logging</groupId>
            <artifactId>jboss-logging</artifactId>
        </exclusion>
        <exclusion>
            <groupId>org.javassist</groupId>
            <artifactId>javassist</artifactId>
        </exclusion>
    </exclusions>
</dependency>

<dependency>
    <groupId>org.javassist</groupId>
    <artifactId>javassist</artifactId>
    <version>${javassist.version}</version>    // 3.20.0-GA
    <scope>runtime</scope>
</dependency>

<dependency>
    <groupId>org.hibernate</groupId>
    <artifactId>hibernate-validator</artifactId>
    <version>${hibernate-validator.version}</version>   // 5.2.4.Final
    <scope>runtime</scope>
    <exclusions>
        <exclusion>
            <groupId>org.jboss.logging</groupId>
            <artifactId>jboss-logging</artifactId>
        </exclusion>
    </exclusions>
</dependency>

<dependency>
    <groupId>org.hibernate</groupId>
    <artifactId>hibernate-validator-annotation-processor</artifactId>
    <version>${hibernate-validator.version}</version>  // 5.2.4.Final
    <scope>compile</scope>
    <optional>true</optional>
</dependency>
.....
这段代码运行良好。当我运行应用程序时,Spring应用程序上下文被正确加载。但当我将应用程序更改为hibernate 5.2时。正如我从中读到的,hibernate entitymanager模块不再存在。其功能已整合到hibernate core中。所以我把我的POM改成了这个

....
<dependency>
    <groupId>org.hibernate</groupId>
    <artifactId>hibernate-core</artifactId>
    <version>${hibernate-core.version}</version>   //5.2.0.Final
    <scope>runtime</scope>
    <exclusions>
        <exclusion>
            <groupId>org.hibernate.javax.persistence</groupId>
            <artifactId>hibernate-jpa-2.1-api</artifactId>
        </exclusion>
        <exclusion>
            <groupId>org.jboss.spec.javax.transaction</groupId>
            <artifactId>jboss-transaction-api_1.2_spec</artifactId>
        </exclusion>
        <exclusion>
            <groupId>xml-apis</groupId>
            <artifactId>xml-apis</artifactId>
        </exclusion>
        <exclusion>
            <groupId>org.jboss.logging</groupId>
            <artifactId>jboss-logging</artifactId>
        </exclusion>
        <exclusion>
            <groupId>org.javassist</groupId>
            <artifactId>javassist</artifactId>
        </exclusion>
    </exclusions>
</dependency>

<!-- Hibernate entity manager with JPA 2 support. 
<dependency>
    <groupId>org.hibernate</groupId>
    <artifactId>hibernate-entitymanager</artifactId>
    <version>${hibernate-entitymanager.version}</version>
    <scope>runtime</scope>
            <exclusions>
                ...
            </exclusions>
        </dependency>
-->

.....
如果我从
集合
更改为
列表
。然后,对于
列表
,我得到了相同的错误。我也试过了

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

org.hibernate
冬眠核心
5.2.0.1最终版本
但同样的错误。为什么我会犯这个错误。我做错什么了吗

谢谢和问候

Basit Mahmood Ahmed

如前所述,使用5.2.1.Final Hibernate版本,应该可以解决这个问题


我可以用5.2.0在spring boot中复制您的问题。更改为5.2.1.Final对我很有用。

Spring数据JPA和Spring还不支持Hibernate 5.2(完全是这样)。在最新的Spring数据JPA快照中有5.2的补丁,您可以试试。HHmm这意味着目前Spring使用5.1.0。一旦spring发布了hibernate 5.2的更改。那么最好使用Spring继续使用Hibernate 5.2?请参阅和。我想你需要等到这些问题得到解决,这可能涉及到升级Spring以及Spring数据JPA。嗯,谢谢。现在我正在等待spring升级:)升级到
Spring4.3.0.RELEASE
SpringDataJPA1.10.2
RELEASE。但是仍然得到同样的错误。。。使用我问题中发布的相同配置。
....
<dependency>
    <groupId>org.hibernate</groupId>
    <artifactId>hibernate-core</artifactId>
    <version>${hibernate-core.version}</version>   //5.2.0.Final
    <scope>runtime</scope>
    <exclusions>
        <exclusion>
            <groupId>org.hibernate.javax.persistence</groupId>
            <artifactId>hibernate-jpa-2.1-api</artifactId>
        </exclusion>
        <exclusion>
            <groupId>org.jboss.spec.javax.transaction</groupId>
            <artifactId>jboss-transaction-api_1.2_spec</artifactId>
        </exclusion>
        <exclusion>
            <groupId>xml-apis</groupId>
            <artifactId>xml-apis</artifactId>
        </exclusion>
        <exclusion>
            <groupId>org.jboss.logging</groupId>
            <artifactId>jboss-logging</artifactId>
        </exclusion>
        <exclusion>
            <groupId>org.javassist</groupId>
            <artifactId>javassist</artifactId>
        </exclusion>
    </exclusions>
</dependency>

<!-- Hibernate entity manager with JPA 2 support. 
<dependency>
    <groupId>org.hibernate</groupId>
    <artifactId>hibernate-entitymanager</artifactId>
    <version>${hibernate-entitymanager.version}</version>
    <scope>runtime</scope>
            <exclusions>
                ...
            </exclusions>
        </dependency>
-->

.....
Caused by: org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'lmsRoleLmsFeatureRepository': Invocation of init method failed; nested exception is org.hibernate.HibernateException: Could not determine a type for class: java.util.Collection
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.initializeBean(AbstractAutowireCapableBeanFactory.java:1578) ~[spring-beans-4.2.6.RELEASE.jar:4.2.6.RELEASE]
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:545) ~[spring-beans-4.2.6.RELEASE.jar:4.2.6.RELEASE]
.....
.....
Caused by: org.hibernate.HibernateException: Could not determine a type for class: java.util.Collection
at org.hibernate.internal.SessionFactoryImpl.resolveParameterBindType(SessionFactoryImpl.java:1023) ~[hibernate-core-5.2.0.Final.jar:5.2.0.Final]
at org.hibernate.query.criteria.internal.CriteriaBuilderImpl.parameter(CriteriaBuilderImpl.java:588) ~[hibernate-core-5.2.0.Final.jar:5.2.0.Final]
at org.springframework.data.jpa.repository.query.ParameterMetadataProvider.next(ParameterMetadataProvider.java:161) ~[spring-data-jpa-1.10.1.RELEASE.jar:?]
at org.springframework.data.jpa.repository.query.ParameterMetadataProvider.next(ParameterMetadataProvider.java:138) ~[spring-data-jpa-1.10.1.RELEASE.jar:?]
<dependency>
    <groupId>org.hibernate</groupId>
    <artifactId>hibernate-core</artifactId>
    <version>5.2.0.Final</version>
</dependency>