2017-06-16 56 views
1

我試圖配置一個簡單的JPA項目,而且我很困難。無法使用Intellij配置JPA

我有一個可運行的dataSource(MySQL)& GlassFish有多個表。

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

  1. 創建Java EE的持久性與Hibernate提供新的項目。

  2. 導入具有Student表的數據庫。

  3. 使用Intellij IDE生成實體類。

  4. 從Maven導入Hibernate-entitymanager庫。

  5. 導入MySQL連接器。

  6. 嘗試運行一個簡單的JPA程序來創建新行,但我得到一個exeption:

    沒有持久性提供EntityManager的命名persistenceUnit

可以採取什麼問題嗎?我嘗試了幾乎所有的教程和每個問題,但沒有成功!

請幫幫我!

(有時在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) 
+0

什麼是你的文件strucutre樣的?你在哪裏擁有persistence.xml – Bajal

回答

1

你定義爲

<persistence-unit name="NewPersistenceUnit"> 

而tryng調用Persistence.createEntityManagerFactory("persistenceUnit");

變化NewPersistenceUnitpersistenceUnit

+0

你完全是我的英雄。如果我沒有結婚,我會請你成爲我最好的人。另一個問題 - 它只適用於org.hibernate:hibernate-entitymanager:4.1.5.Final和崩潰的最新版本org.hibernate:hibernate-entitymanager:5.10.Final你知道爲什麼嗎? –

+0

不幸的是我也結婚了))哈哈。墜毀時有什麼例外?順便說一下,看到這裏可能的原因https://stackoverflow.com/questions/39410183/hibernate-5-2-2-no-persistence-provider-for-entitymanager –

+0

你救了我兩次。現在我一定會在你之後爲我的兒子命名。謝謝! –