无法使用Intellij配置JPA

时间:2017-06-16 15:06:07

标签: java mysql hibernate jpa intellij-idea

我正在尝试配置一个简单的JPA项目而且我很困难。

我有一个工作的数据源(MySQL)& GlassFish有多个表格。

我做了以下步骤(Intellij生成的所有文件):

  1. 使用Java EE Persistance和Hibernate Provider创建新项目。

  2. 导入具有Student表的数据库。

  3. 使用Intellij IDE生成实体类。

  4. 从Maven导入Hibernate-entitymanager库。

  5. 导入MySQL连接器。

  6. 尝试运行一个简单的JPA程序来创建新行,但我得到一个例外:

    没有EntityManager的持久性提供程序名为persistenceUnit

  7. 可能是什么问题?我几乎尝试了每个教程和每个问题,但没有成功!

    请帮助我!

    (有时持久性提供程序中的Hibernate为红色)

    持久性:

        <?xml version="1.0" encoding="UTF-8"?>
    <persistence xmlns="http://java.sun.com/xml/ns/persistence" version="2.0">
    
        <persistence-unit name="NewPersistenceUnit">
            <provider>org.hibernate.ejb.HibernatePersistence</provider>
            <class>modules.CourseEntity</class>
            <class>modules.StuCouEntity</class>
            <class>modules.StudentsEntity</class>
            <class>modules.TeacherEntity</class>
            <properties>
                <property name="hibernate.connection.url" value="jdbc:mysql://localhost:3306"/>
                <property name="hibernate.connection.driver_class" value="com.mysql.jdbc.Driver"/>
                <property name="hibernate.connection.username" value="root"/>
                <property name="hibernate.connection.password" value="123456"/>
                <property name="hibernate.archive.autodetection" value="class"/>
                <property name="hibernate.show_sql" value="true"/>
                <property name="hibernate.format_sql" value="true"/>
                <property name="hbm2ddl.auto" value="update"/>
            </properties>
        </persistence-unit>
    </persistence>
    

    Main.java:

    import modules.StudentsEntity;
    
    import javax.persistence.EntityManager;
    import javax.persistence.EntityManagerFactory;
    import javax.persistence.Persistence;
    public class MainClass
    {
        public static void main(String[] args)
        {
            StudentsEntity stu = new StudentsEntity();
            stu.setName("David");
    
            EntityManagerFactory emf = Persistence.createEntityManagerFactory("persistenceUnit");
            EntityManager em = emf.createEntityManager();
    
            em.getTransaction().begin();
            try
            {
                em.persist(stu);
                em.getTransaction().commit();
            }
            catch (Exception ex)
            {
                System.out.println(ex.getMessage());
                ex.printStackTrace();
                em.getTransaction().rollback();
            }
            finally
            {
                em.close();
            }
    
    
    
        }
    }
    

    错误:

    June 16, 2017 5:47:07 PM org.hibernate.annotations.common.Version <clinit>
    INFO: HCANN000001: Hibernate Commons Annotations {4.0.1.Final}
    June 16, 2017 5:47:07 PM org.hibernate.Version logVersion
    INFO: HHH000412: Hibernate Core {4.1.5.Final}
    June 16, 2017 5:47:07 PM org.hibernate.cfg.Environment <clinit>
    INFO: HHH000206: hibernate.properties not found
    June 16, 2017 5:47:07 PM org.hibernate.cfg.Environment buildBytecodeProvider
    INFO: HHH000021: Bytecode provider name : javassist
    Exception in thread "main" javax.persistence.PersistenceException: No Persistence provider for EntityManager named persistenceUnit
        at javax.persistence.Persistence.createEntityManagerFactory(Persistence.java:84)
        at javax.persistence.Persistence.createEntityManagerFactory(Persistence.java:54)
        at MainClass.main(MainClass.java:17)
        at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
        at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
        at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
        at java.lang.reflect.Method.invoke(Method.java:498)
        at com.intellij.rt.execution.application.AppMain.main(AppMain.java:147)
    

1 个答案:

答案 0 :(得分:1)

您已定义

<persistence-unit name="NewPersistenceUnit">
尝试拨打Persistence.createEntityManagerFactory("persistenceUnit");

NewPersistenceUnit更改为persistenceUnit