2010-07-12 3 views
6

Я хотел бы создать один Bundle, который может использовать Java Persistence. Для этого я создал проект плагина в Eclipse. В моем проекте я создал файл persistence.xml в META-INF. Я так же добавил в моем Manifest.mf (в depencies) эти 3 пакетов:EclipseLink: поставщик с постоянством для EntityManager с именем

  1. javax.persistence.jar
  2. org.eclipse.persistence.jar
  3. org.eclipse.persistence.jar

Тогда в моем Активатор я использую эти строки для создания EntityManager:

factory = Persistence.createEntityManagerFactory(PERSISTENCE_UNIT_NAME); 
EntityManager em = factory.createEntityManager(); 

чтобы выполнить узелок, я сделал произво ct. Когда я запускаю мою конфигурацию продукта, я получил эту ошибку:

javax.persistence.PersistenceException: Нет поставщика Persistence для EntityManager названных людей

Я пытался изменить местоположение моего persistence.xml без успеха , Кажется, что любой пакет загружает файл persistence.xml. Может быть, я не импортирую нужные пакеты?

Вы можете скачать мой простой Bundle здесь: download

Не могли бы вы помочь мне найти решение или ключ?

ответ

4

Попробуйте добавить этот тег в persistence.xml:

<provider>org.eclipse.persistence.jpa.PersistenceProvider</provider> 
+1

Спасибо, но у меня есть эта линия в моей настойчивости.xml-файл. Другое решение? – user376112

2

Кажется, что вы не описали свою единицу сохранения в MANIFEST.MF с JPA-PersistenceUnits: заголовок. Более подробную информацию о EclipseLink можно найти здесь (1).

(1): http://wiki.eclipse.org/Gemini/JPA/Documentation/CreatingAnApplication

+0

Я решил свою проблему. Я только должен был поставить в пути к классам манифеста в этом пакете: - persistence.jar - eclipselink.jar - MySQL-connector.jar Спасибо – user376112

6

Я решить мою проблему. Я только должен был поставить в пути к классам манифеста в этом пакете: - persistence.jar - eclipselink.jar - MySQL-connector.jar

Благодаря

+0

Я не уверен, что я следую ты добавил манифест той баночки файлы? Можете ли вы разработать немного больше? – simgineer

1

Если вы работаете в приложении внутри затмения, используя Maven, щелкните правой кнопкой мыши проект JPA, выберите «Свойства» и посмотрите, есть ли пункт меню «Развертывание сборки». Если это так, нажмите «Развертывание сборки», нажмите кнопку «Добавить ...», «Записи пути Java», а затем выберите «Зависимости Maven». Убедитесь, что eclipselink.jar входит в число зависимостей Maven

1

Я получал ту же ошибку в простом проекте, запущенном в Eclipse.

Оказалось, что добавление каталога META-INF (содержащего persistence.xml) в мой путь к классу было неправильным делом.

Вы должны иметь его содержащий dir (или jar) на пути класса. Из источников EclipseLink 2.5.1:

/** 
    * Search the classpath for persistence archives. A persistence archive is 
    * defined as any part of the class path that contains a META-INF directory 
    * with a persistence.xml file in it. Return a list of {@link Archive} 
    * representing the root of those files. It is the caller's responsibility 
    * to close all the archives. 
    * 
    * @param loader the class loader to get the class path from 
    */ 
    public static Set<Archive> findPersistenceArchives(ClassLoader loader){ 
     // allow alternate persistence location to be specified via system property. This will allow persistence units 
     // with alternate persistence xml locations to be weaved 
     String descriptorLocation = System.getProperty(PersistenceUnitProperties.ECLIPSELINK_PERSISTENCE_XML, PersistenceUnitProperties.ECLIPSELINK_PERSISTENCE_XML_DEFAULT); 
     return findPersistenceArchives(loader, descriptorLocation); 
    } 
Смежные вопросы