java.lang.NoSuchMethodError:javax.persistence.Table.indexes()[Ljavax / persistence / Index

时间:2018-03-18 14:05:59

标签: java hibernate jpa intellij-idea

我正在尝试使用Hibernate创建一个简单的应用程序,但我收到此错误并且不确定原因。

我正在使用IntelliJ,制作Maven项目并从数据库生成模型:

这是我的pom.xml:

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
    <modelVersion>4.0.0</modelVersion>

    <groupId>com.nemanjagajic</groupId>
    <artifactId>FacultyJPA</artifactId>
    <version>1.0-SNAPSHOT</version>

    <dependencies>
        <dependency>
            <groupId>mysql</groupId>
            <artifactId>mysql-connector-java</artifactId>
            <version>5.1.6</version>
        </dependency>
        <dependency>
            <groupId>org.hibernate</groupId>
            <artifactId>hibernate-core</artifactId>
            <version>5.2.15.Final</version>
        </dependency>
    </dependencies>

</project>

的persistence.xml:

<?xml version="1.0" encoding="UTF-8"?>
<persistence xmlns="http://java.sun.com/xml/ns/persistence" version="2.0">

    <persistence-unit name="FacultyJPAPersistenceUnit">
        <provider>org.hibernate.jpa.HibernatePersistenceProvider</provider>
        <class>model.Student</class>
        <properties>
            <property name="hibernate.connection.driver_class" value="com.mysql.jdbc.Driver"/>
            <property name="hibernate.connection.url" value="jdbc:mysql://localhost:3306/faculty"/>
            <property name="hibernate.connection.autocommit" value="false"/>
            <property name="hibernate.connection.username" value="root"/>
            <property name="hibernate.connection.password" value="nemanja96"/>
            <property name="hibernate.dialect" value="org.hibernate.dialect.MySQL5Dialect"/>
            <property name="hibernate.connection.CharSet" value="utf8"/>
            <property name="hibernate.connection.characterEncoding" value="utf8"/>
            <property name="hibernate.connection.useUnicode" value="true"/>
            <property name="hibernate.show_sql" value="true"/>
            <property name="hibernate.hbm2ddl.auto" value="update"/>
        </properties>
    </persistence-unit>
</persistence>

基本的JPAUtil:

package utils;

import javax.persistence.EntityManager;
import javax.persistence.EntityManagerFactory;
import javax.persistence.Persistence;

public class JPAUtil {
    static EntityManagerFactory factory;

    static {
        factory = Persistence.createEntityManagerFactory("FacultyJPAPersistenceUnit");
    }

    public static EntityManager getEntityManager() {
        return factory.createEntityManager();
    }
}

当我运行它时

public class Application {

    public static void main(String[] args) {
        Student student = new Student();
        student.setId(1);
        student.setName("John");
        student.setLastName("Dee");

        EntityManager em = JPAUtil.getEntityManager();
        em.persist(student);
    }

}

我收到上述错误。

不确定我做错了什么,似乎无法使用hibernate配置简单的项目。如果有人可以告诉我这是什么问题,或者通过我使用hibernate创建简单项目的一些教程的链接,这个教程没有过时且正在工作。

1 个答案:

答案 0 :(得分:0)

您能否提供异常/错误的堆栈跟踪?

查看堆栈跟踪...如果在库中的对象上调用方法时出现异常,则在编译和运行时很可能使用库的单独版本。确保两个地方都有正确的版本。

如果在由您创建的类实例化的对象上调用方法时出现异常,那么您的构建过程似乎有问题。确保在编译时更新实际运行的类文件。

  • 检查包含该方法的类是否在类路径中。

  • 检查您是否添加了新版本的JAR,并且该方法兼容。