0

我们已经为此工作了好几天,我们很困惑。这应该是一个使用 TopLink 的简单教程。在我们做我们真正的网络应用程序之前,我们正试图让它发挥作用。这是我们得到的以下异常:

线程“main”中的异常 javax.persistence.PersistenceException:没有名为 pu1 的 EntityManager 的持久性提供程序:
以下提供程序:
oracle.toplink.essentials.PersistenceProvider
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 驱动程序类执行此行之后:

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>

我们还认为这可能是添加库问题或类似的东西。任何帮助深表感谢。谢谢

4

1 回答 1

3

您有错误的持久性单元名称。使用 xml 中的那个(即用 定义的那个<persistence-unit name="..."):

emf = Persistence.createEntityManagerFactory("JPAExamplePU");
于 2010-11-11T06:13:55.817 回答