Исключение javax.persistence.PersistenceException: нет поставщика сохраняемости для EntityManager

Мы работали над этим несколько дней, и мы в тупике. Предполагается, что это простое руководство с использованием TopLink. Мы пытаемся заставить это работать, прежде чем создавать наше настоящее веб-приложение. Мы получаем следующее исключение:

Исключение в потоке "main" javax.persistence.PersistenceException: нет поставщика сохраняемости для EntityManager с именем pu1:
Следующие поставщики:
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.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>

Мы также думали, что это может быть проблема с добавлением библиотеки или что-то в этом роде. Любая помощь очень ценится. Спасибо


person Marty    schedule 11.11.2010    source источник
comment
вы используете сервер приложений OC4J?   -  person Romani    schedule 11.11.2010


Ответы (1)


У вас неправильное имя единицы сохранения состояния. Используйте тот из xml (то есть тот, который определен с <persistence-unit name="..."):

emf = Persistence.createEntityManagerFactory("JPAExamplePU");
person Bozho    schedule 11.11.2010
comment
Хорошо, мы попробовали это и получили ту же ошибку. Мы думаем, что он должен что-то делать с путем к файлу в persistence.xml, но netbeans создал пу, поэтому он должен быть в правильном месте, верно? - person Marty; 11.11.2010
comment
да, это в правильном месте. Убедитесь, что ваши изменения были развернуты. (та же ошибка будет означать, что он все еще ищет неправильный пу) - person Bozho; 11.11.2010