2016-04-06 2 views
0

Я переношу проект, который работал на Tomcat 8 в Weblogic. Я использую Hibernate JPA + 2. Когда я раскрываю в WebLogic получил следующее сообщение об ошибке:Ошибка Weblogic + Hibernate: javax.persistence.JoinTable.indexes() [Ljavax/persistence/Index

Failure occurred in the execution of deployment request with ID "26012160125422" for task "114". Error is: "weblogic.application.ModuleException: java.lang.NoSuchMethodError: javax.persistence.JoinTable.indexes()[Ljavax/persistence/Index;" 

weblogic.application.ModuleException: java.lang.NoSuchMethodError: javax.persistence.JoinTable.indexes() [Ljavax/сохранение/Индекс

Environment
- Java: jdk1.8.0_60
- Weblogic: 12.1.3
- зимуют-EntityManager: 4.3.1.Final
- зимуют-ядро: 4.3.1.Final
- javaee-api: 7.0

pom.xml

<dependencies> 
    <dependency> 
     <groupId>javax</groupId> 
     <artifactId>javaee-api</artifactId> 
     <version>7.0</version> 
    </dependency> 
    <dependency> 
     <groupId>org.hibernate</groupId> 
     <artifactId>hibernate-core</artifactId> 
     <version>4.3.1.Final</version> 
    </dependency>   
    <dependency> 
     <groupId>org.hibernate</groupId> 
     <artifactId>hibernate-entitymanager</artifactId> 
     <version>4.3.1.Final</version>   
    </dependency> 
    <dependency> 
     <groupId>com.microsoft.sqlserver</groupId> 
     <artifactId>sqljdbc4</artifactId> 
     <version>4.0</version> 
    </dependency>  
</dependencies> 

ответ

0

Странно, что вы используете javaee-api-7.0.jar, Hibernate 4 имеет hibernate-jpa-2.1-api-1.0.0.Final.jar как зависимость. Но это не причина ошибки.

JoinTable.indexes() было добавлено с Java Persistence 2.1. Таким образом, у вас есть только старая банка с аннотацией JoinTable в пути к классам (в папках по умолчанию для Weblogic по умолчанию).

Для того, чтобы проверить, где эта баночка, запустить этот код перед кодом конфигурации Hibernate

URL joinTableUrl = Thread.currentThread().getContextClassLoader() 
    .getResource(
    "javax/persistence/JoinTable.class"); 
System.out.println(joinTableUrl); 

Чтобы проверить JoinTable имеет indexes() метод

Class<?> joinTable = Thread.currentThread().getContextClassLoader() 
     .loadClass(JoinTable.class.getName()); 

System.out.println(Arrays.asList(joinTable.getDeclaredMethods())); 
Смежные вопросы