java.lang.NoSuchMethodError: javax.persistence.Table.indexes () [Ljavax / persistence / Index;несмотря на hibernate-jpa-2.1.jar в classpath - PullRequest
0 голосов
/ 02 октября 2018

Я знаю, что на этот вопрос уже есть ответы, но я не могу решить свою проблему.

У меня есть hibernate-commons-annotations-5.0.1.Final.jar, hibernate-core-4.3.5.Final.jar, hibernate-jpa-2.1-api-1.0.0.final.jar в пути к классам.

Ниже приведен мой код HibernateUtil:

public class HibernateUtil {

private static SessionFactory sessionAnnotationFactory;

private static SessionFactory buildSessionAnnotationFactory() {
    try {
        // Create the SessionFactory from hibernate-annotation.cfg.xml
        Configuration configuration = new Configuration();
        configuration.configure("hibernate-annotation.cfg.xml");
        System.out.println("Hibernate Annotation Configuration loaded");
        ServiceRegistry serviceRegistry = new StandardServiceRegistryBuilder().applySettings(configuration.getProperties()).build();
        System.out.println("Hibernate Annotation serviceRegistry created");
        SessionFactory sessionFactory = configuration.buildSessionFactory(serviceRegistry);
        return sessionFactory;
    } catch (Throwable ex) {
        // Make sure you log the exception, as it might be swallowed
        System.err.println("Initial SessionFactory creation failed." + ex);
        throw new ExceptionInInitializerError(ex);
    }
}

public static SessionFactory getSessionAnnotationFactory() {
    if (sessionAnnotationFactory == null) sessionAnnotationFactory = buildSessionAnnotationFactory();
    return sessionAnnotationFactory;
}

}

Тем не менее я получаю следующую ошибку:

Начальное создание SessionFactory не удалось. Java.lang.NoSuchMethodError: javax.persistence.Table.indexes () [Ljavax / persistence / Index;

Причина: java.lang.NoSuchMethodError: javax.persistence.Table.indexes () [Ljavax / persistence / Index;по адресу org.hibernate.cfg.annotations.EntityBinder.processComplementaryTableDefinitions (EntityBinder.java:936) по адресу org.hibernate.cfg.AnnotationBinder.bindClass (AnnotationBinder.java:824) по адресу org.hibernate.cfueue.Configuration..java: 3788) в org.hibernate.cfg.Configuration $ MetadataSourceQueue.processMetadata (Configuration.java:3742) в org.hibernate.cfg.Configuration.secondPassCompile (Configuration.java:1410) в org.hibernate.cfg.Configuration.buildSessionFactory (Configuration.java:1844) в net.deldot.util.HibernateUtil.buildSessionAnnotationFactory (неизвестный источник) в net.deldot.util.HibernateUtil.getSessionAnnotationFactory (неизвестный источник)

если я использую IntelliJчто помогает.Это не мавенский проект.Я не использую jboss.Здесь нет стеклянных банок. Я читал другие ответы, в которых говорится, что эта ошибка возникает из-за конфликтующих hibernate-jpa-2.1-api-1.0.0.final.jar и hibernate-jpa-2.0-api-1.0.0.final.jar,Но я не вижу jiber hibernate-jpa-2.0 в моем проекте.Я не знаю, какая банка конфликтует с банкой hibernate-jpa-2.1. Как это проверить?

Ответы [ 2 ]

0 голосов
/ 03 октября 2018

Хорошо, не лучшее решение, а обходной путь.Так как я не смог включить поддержку weblogic для JPA2.1, я заменил Hibernate-core-4.3.5.Final.jar на Hibernate-core-4.2.21.Final.jar (поддержка JPA2.1 была введена в Hibernate 4.3.0).Я больше не получаю эту ошибку.

0 голосов
/ 02 октября 2018

Вы используете hibernate-commons-annotations-5.0.1.Final.jar из Hibernate 5 с hibernate-core-4.3.5.Final.jar из Hibernate 4. Это неверно.

@Table примечание с методом Table#indexes() должно быть в hibernate-jpa-2.1-api-1.0.0.Final.jar

https://stackoverflow.com/a/35569978/3405171

Вы можете попытаться проверить, откуда появилась старая аннотация @Table, используя этот подход

https://stackoverflow.com/a/37409315/3405171

И, пожалуйста, используйте Maven илиGradle.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...