2013-04-15 2 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> 

Но, даже когда я изменить свойства, я ве получил ту же ошибку:

Исключение в потоке «основной» javax.persistence.PersistenceException: Нет поставщика Постоянство для EntityManager имени MyPU (при вызове фабрики = Persistence.createEntityManag erFactory (PERSISTENCE_UNIT_NAME);).

Я сделал что-то не так, чтобы установить xml и постоянство единицы? Я добавил к категорииpath:

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 к вашему основному классу, чтобы проверить, имеет ли класс pathpath их. – Chris

+0

Так я извлекал так О.Г. их, я просто следующее Сейчас: 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 Но у меня все еще есть то же. Как проверить, что путь к классам содержит зависимости eclipslink? Благодаря ! – Derbie

+0

, откуда взялась банку org.eclipse.persistence.jpa.jpql_1.0.1.jar? Убедитесь, что у вас есть полный eclipselink.jar, а не переименован в один из пакетов OSGI - он должен иметь файл META-INF \ services \ javax.persistence.spi.PersistenceProvider, в котором указано имя класса поставщика, которое будет использоваться в теге . Также попробуйте инициализировать класс EclipseLink в вашем основном методе до получения единицы персистентности - он даст вам ошибку компиляции/выполнения, если ваш путь к классам настроен неправильно. Что-то вроде новой org.eclipse.persistence.platform.database.DatabaesPlatform() – Chris

ответ

0

В моем приложении у меня была эта проблема, пока я не скомпилировал проект Netbeans. Тогда это сработало.

Смежные вопросы