2017-04-14 15 views
0

그래서 나는 앞서 언급 한 ClassNotFoundException을 만났다. 분명히 최대 절전 모드 org.hibernate.cfg.AnnotationBinder의 최신 버전은 javax.persistence.NamedStoredProcedureQuery에 종속됩니다. 이것은 JPA 2.1을 사용하고있는 올바른 동작입니다. JPA 2.0이 필요한 경우에는 그렇지 않습니다.JPA 2.0 Hibernate 4.3/5.x java.lang.ClassNotFoundException : javax.persistence.NamedStoredProcedureQuery

<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> 

답변

0

클래스 패스에 hibernate-entitymanager를 추가해야합니다. 이것은 비어있는 항아리이지만 어떤 이유로 그것은 jar 2.0을 준수하는 핵심 항아리가됩니다.

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

5.2 이후로,'hibernate-entitymanager'는 간단하게''hibernate-core'로 리다이렉트합니다. – coladict

+0

당신은 맞지만 entityManager 패키지가 classpath에 없다면 코어 모듈은 JPA 2.1 인터페이스를 사용할 것입니다. – pjanssen

+0

나는 어쨌든 2.1 인터페이스를 사용하여 끝났다고 확신한다. 그렇지 않으면 여전히 ClassNotFoundException과 충돌 할 것이다. 어쨌든 당신이 시도한 것처럼 그 배제와 함께 강제로 다운 그레이드해서는 안됩니다. 그것은 진짜 문제였습니다. – coladict