2010-11-11 106 views
0

我們一直在爲此工作數天,而且我們很難過。這應該是一個使用TopLink的簡單應用程序。在我們開發真正的網絡應用程序之前,我們正在努力實現這一目標。這是下面的異常,我們得到:在線程「主要」 javax.persistence.PersistenceException異常javax.persistence.PersistenceException:沒有EntityManager的持久性提供者

例外:
以下供應商:
oracle.toplink.essentials.PersistenceProvider
沒有找到EntityManager的命名PU1持久性提供者 oracle.toplink.essentials.ejb.cmp3.EntityManagerFactoryProvider
返回null返回createEntityManagerFactory。
在javax.persistence.Persistence.createEntityManagerFactory(Persistence.java:154)
在javax.persistence.Persistence.createEntityManagerFactory(Persistence.java:83)
在client.Client.main(Client.java:45)
Java結果:1

發生這種情況從我們的電動勢驅動程序類執行此行之後:

emf = Persistence.createEntityManagerFactory("pu1"); 

我假設的問題是我們的persistence.xml文件(這是在正確的文件夾(WEB-INF/classes/META-INF)。同時產生的NetBeans爲我們的xml文件是:

<?xml version="1.0" encoding="UTF-8"?> 
<persistence version="1.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_1_0.xsd"> 
<persistence-unit name="JPAExamplePU" transaction-type="JTA"> 
<provider>oracle.toplink.essentials.PersistenceProvider</provider> 
<jta-data-source>SomeDB</jta-data-source> 
<exclude-unlisted-classes>false</exclude-unlisted-classes> 
<properties> 
<property name="toplink.ddl-generation" value="drop-and-create-tables"/> 
</properties> 
</persistence-unit> 
</persistence> 

我們還以爲這可能是添加沿該線的庫問題什麼的。任何幫助深表感謝。謝謝

+0

您使用的是OC4J應用服務器嗎? – Romani 2010-11-11 05:13:22

回答

3

你有錯誤的持久單元名稱。使用xml中的一個(即用<persistence-unit name="..."定義的那個):

emf = Persistence.createEntityManagerFactory("JPAExamplePU"); 
+0

好的,我們試過了,所以得到相同的錯誤。我們認爲它必須對persistence.xml的文件路徑做些事情,但netbeans創建了pu,所以它應該在正確的位置? – Marty 2010-11-11 17:51:22

+0

是的,它在正確的位置。確保您的更改已部署。 (「同樣的錯誤」意味着它仍然在尋找錯誤的pu) – Bozho 2010-11-11 17:57:15

相關問題