2013-04-15 65 views
0

我試圖使用JPA和EclipseLink持久化元素。所以我創建了一個類堅持未找到EntityManager的持久性提供者

@Entity 
public class Couple implements Serializable{ 
    private static final long serialVersionUID = 1L; 
    @Column(name = "OBJECTID") 
    private String objectID; 
    @Column(name = "EPCNUMBER") 
    private String epcNumber; 

    @Id 
    @GeneratedValue(strategy = GenerationType.AUTO) 
    private Long id; 

等等。 我創建了一個類來「使用」中指出:

public class Main { 
    private static final String PERSISTENCE_UNIT_NAME = "MyPU"; 
    private static EntityManagerFactory factory; 

    public static void main(String[] args) { 
    factory = Persistence.createEntityManagerFactory(PERSISTENCE_UNIT_NAME); 
    EntityManager em = factory.createEntityManager(); 
    TypedQuery<Couple> q = em.createQuery("SELECT c FROM Couple c", Couple.class); 
    List<Couple> couples = (List<Couple>) q.getResultList(); 

然後,我已經下面的persistence.xml:

<?xml version="1.0" encoding="UTF-8"?> 
<persistence version="2.0" xmlns="http://java.sun.com/xml/ns/persistence" 
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
xsi:schemaLocation="http://java.sun.com/xml/ns/persistence http://java.sun.com/xml/ns/persistence/persistence_2_0.xsd"> 
    <persistence-unit name="MyPU"> 
     <provider>org.eclipse.persistence.jpa.PersistenceProvider</provider> 
     <jta-data-source>localJTA</jta-data-source> 
     <class>fr.mypackage.com.Couple</class> 
     <properties> 
      <property name="eclipselink.ddl-generation" value="create-tables"/> 
      <property name="eclipselink.ddl-generation.output-mode" value="database" /> 
      <property name="eclipselink.logging.level" value="INFO"/> 
     </properties> 
    </persistence-unit> 
</persistence> 

但是,即使當我改變了性質,我已經得到了同樣的錯誤:

異常線程「main」 javax.persistence.PersistenceException:否EntityManager的持久性提供者命名MyPU (主叫廠當= Persistence.createEntityManag erFactory(PERSISTENCE_UNIT_NAME))。

我對ling xml和持久性單元做了什麼錯誤嗎?我已經添加到類路徑以下:

javax.persistence.jar 
javax.ejb.jar 
eclipselink.jar 
javax.persistence_1.0.0.jar 
javax.persistence_2.0.4.v201112161009.jar 
derby.jar 

你能幫我嗎?謝謝 !

+0

你有太多的persistence.jars在那裏,你應該選擇。需要更多信息來找出爲什麼沒有找到eclipselink提供者。你可以在你的主類中添加eclipselink依賴項來驗證類路徑是否有它們。 – Chris

+0

所以我刪除這麼OG他們,我只是有以下現在:javax.ejb.jar eclipselink.jar javax.persistence_2.0.4.v201112161009.jar 的derby.jar org.eclipse.persistence.jpa.jpql_1.0.1 .jar org.eclipse.persistence.jpa.modelgen.processor-2.3.2.jar但是我仍然有同樣的情況。如何檢查classpath是否包含eclipslink的依賴關係?謝謝 ! – Derbie

+0

org.eclipse.persistence.jpa.jpql_1.0.1.jar jar是從哪裏來的?檢查您是否擁有完整的eclipselink.jar,而不是重命名其中的一個OSGI軟件包 - 它應該有一個META-INF \ services \ javax.persistence.spi.PersistenceProvider文件,其中列出了要在標記中使用的提供程序類名稱。在獲取持久性單元之前,還要嘗試在主要方法中初始化一個EclipseLink類 - 如果您的類路徑設置不正確,它會給您一個編譯/運行時錯誤。像新的org.eclipse.persistence.platform.database.DatabaesPlatform() – Chris

回答

0

在我的應用程序中,我遇到了這個問題,直到我編譯了我的Netbeans項目。然後它工作。

相關問題