2010-11-11 105 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

相关问题