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>
所以我运行变成了前面提到的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>