JPA 2.0 休眠 4.3/5.x java.lang.ClassNotFoundException: javax.persistence.NamedStoredProcedureQuery

JPA 2.0 Hibernate 4.3/5.x java.lang.ClassNotFoundException: javax.persistence.NamedStoredProcedureQuery

所以我运行变成了前面提到的ClassNotFoundException。显然在较新版本的休眠中 org.hibernate.cfg.AnnotationBinder 依赖于 javax.persistence.NamedStoredProcedureQuery。如果您使用的是 JPA 2.1,这是正确的行为。但是,当您需要 JPA 2.0 时,情况并非如此。

<dependency>
    <groupId>org.hibernate.javax.persistence</groupId>
    <artifactId>hibernate-jpa-2.0-api</artifactId>
    <version>1.0.1.Final</version>
</dependency>
<dependency>
    <groupId>org.hibernate</groupId>
    <artifactId>hibernate-core</artifactId>
    <version>5.2.10.Final</version>
    <exclusions>
        <exclusion>
            <groupId>org.hibernate.javax.persistence</groupId>
            <artifactId>hibernate-jpa-2.1-api</artifactId>
        </exclusion>
    </exclusions>
</dependency>

您必须将 hibernate-entitymanager 添加到类路径中。这是一个空罐子,但出于某种原因,它使核心罐子 jpa 2.0 兼容。

<dependency>
    <groupId>org.hibernate</groupId>
    <artifactId>hibernate-entitymanager</artifactId>
    <version>${hibernate.version}</version>
</dependency>