Hibernate 5 - java.lang.NoSuchMethodError: javax.persistence.Table.indexes () - PullRequest
0 голосов
/ 29 мая 2018

Я пытаюсь протестировать некоторые POJO с аннотациями гибернации, и я получаю ту же ошибку снова и снова.Я использовал ту же конфигурацию в другом проекте, и все работало нормально.Я протестировал соединение jdbc, которое используется при тестировании объектов Hib - и соединение работает нормально.

Я нашел несколько других вопросов об этой ошибке, но ничего не помогло.

Код в классе тестирования с методом main:

public static void main(String[] args) {

    SessionFactory factory = new Configuration()
            .configure("hibernate.cfg.xml")
            .addAnnotatedClass(Item.class)
            .buildSessionFactory();

    //create session
    Session session = factory.getCurrentSession();

    try {

        session.beginTransaction();

        List<Item> items = session.createQuery("from items").list();

POJO саннотации hibernate:

@Entity
@Table(name="items")
public class Item {

    @Id
    @GeneratedValue(strategy=GenerationType.IDENTITY)
    @Column(name="id")
    private int id;

    @Column(name="name")
    private String name;

    @Column(name="price")
    private double price;

    @Column(name="stock")
    private int stock;

    public Item() {
    }

    public Item(String name, double price) {
    this.name = name;
    this.price = price;
    }

Ниже приведены методы получения и установки для каждой сущности.

Файл hibernate.cfg.xml имеет ту же конфигурацию, что и тот же файл в другом проекте, где соединение иКод hibernate работает отлично - как писал abobe, соединение было проверено в отдельном классе.

Используемые мной jar-файлы (все добавлены в путь к классам):

  • antlr-2.7.7.jar byte-buddy-1.8.0.jar
  • одноклассник-1.3.0.jar
  • dom4j-1.6.1.jar
  • hibernate-commons-annotations-5.0.3.Final.jar
  • hibernate-core-5.3.0.Final.jar
  • hibernate-jpa-2.0-api-1.0.0.Final.jar
  • jandex-2.0.3.Final.jar
  • javassist-3.22.0-GA.jar
  • javax.persistence-api-2.2.jar
  • jboss-каротаж 3.3.2.Final.jar
  • jboss -action-api_1.2_spec-1.0.1.Final.jar
  • mysql-connector-java-8.0.11.jar

Ошибка, о которой я упоминал взаголовок упоминает строку в моем коде, которая является строкой в ​​первом фрагменте кода, где происходит .buildSessionFactory ().

1 Ответ

0 голосов
/ 31 мая 2018

В пути вашего класса есть конфликтующие банки:

  • hibernate-jpa-2.0-api-1.0.0.Final.jar

  • javax.persistence-api-2.2.jar

javax.persistence.Table.indexes - это функция, добавленная в JPA 2.1.

Поэтому вы должны отказаться от jiber-jpa-2.0-api-1.0.0.Final.jar, потому что он описывает только API JPA 2.0.

Если у вас несколько версий одного и того жеДля классов, доступных приложению, трудно предсказать, какая версия будет загружена первой, поэтому иногда она может работать.Но в основном это лотерея, поэтому вы никогда не должны делать это на практике.

...