У меня есть мой persistence.xml
с тем же именем, используя TopLink
в META-INF
каталоге. Затем у меня есть код, который вызывает его с:
EntityManagerFactory emfdb = Persistence.createEntityManagerFactory("agisdb");
Тем не менее, я получил следующее сообщение об ошибке:
2009-07-21 09: 22: 41,018 [main] ОШИБКА - Отсутствует поставщик сохраняемости для EntityManager с именем agisdb javax.persistence.PersistenceException: нет поставщика сохраняемости для EntityManager с именем agisdb в javax.persistence.Persistence.createEntityManagerFactory (Persistence.java:89) в javax.persistence.Persistence.createEntityManagerFactory (Persistence.java:60)
Вот это persistence.xml
:
<?xml version="1.0" encoding="UTF-8"?>
<persistence xmlns="http://java.sun.com/xml/ns/persistence" version="1.0">
<persistence-unit name="agisdb">
<class>com.agis.livedb.domain.AddressEntity</class>
<class>com.agis.livedb.domain.TrafficCameraEntity</class>
<class>com.agis.livedb.domain.TrafficPhotoEntity</class>
<class>com.agis.livedb.domain.TrafficReportEntity</class>
<properties>
<property name="toplink.jdbc.url" value="jdbc:mysql://localhost:3306/agisdb"/>
<property name="toplink.jdbc.driver" value="com.mysql.jdbc.Driver"/>
<property name="toplink.jdbc.user" value="root"/>
<property name="toplink.jdbc.password" value="password"/>
</properties>
</persistence-unit>
</persistence>
Это должно было быть в classpath. Тем не менее, я получил вышеуказанную ошибку.
java
jpa
persistence
toplink
Роберт А Хенру
источник
источник
<provider/>
, а при использовании hibernate-4 вам следует сменить поставщика<provider>org.hibernate.jpa.HibernatePersistenceProvider</provider>
, см. Stackoverflow.com/questions/23041964/… .Поместите в путь к
"hibernate-entitymanager.jar"
классу приложения.Для более новых версий вы должны использовать
"hibernate-core.jar"
вместо устаревшихhibernate-entitymanager
Если вы работаете через какую-то IDE, например, Eclipse :
Project Properties -> Java Build Path -> Libraries.
В противном случае,
/lib
укажите это в своем заявлении.источник
org.hibernate
артефактом groupidhibernate-entitymanager
org.eclipse.persistence.jpa
с объемным тестом.Убедитесь, что
persistence.xml
файл находится в каталоге:<webroot>/WEB-INF/classes/META-INF
источник
Мне нужно это в моем файле pom.xml:
источник
Столкнулся с той же проблемой и не мог найти решение в течение достаточно долгого времени. В моем случае это помогло заменить
с участием
Взял решение отсюда
источник
Есть еще один момент: если вы столкнулись с этой проблемой в среде Eclipse RCP, вам, возможно, придется изменить поколение Factory с
Persistence.createEntityManagerFactory
наnew PersistenceProvider().createEntityManagerFactory
см. ECF для подробного обсуждения этого.
источник
Возможно, вы определили одного провайдера как,
<provider>org.hibernate.ejb.HibernatePersistence</provider>
но ссылаетесь на другого в jar. Это случилось со мной: мой поставщик persistence.xml был openjpa, но я использовал eclipselink в моем classpath. Надеюсь, это поможет!источник
Быстрый совет:
При использовании JPA в автономном приложении (за пределами JavaEE) где-то должен быть указан поставщик постоянства. Это можно сделать двумя способами, которые я знаю:
<provider>org.hibernate.ejb.HibernatePersistence</provider>
(как описано в правильном ответе Криса: https://stackoverflow.com/a/1285436/784594 )В моем случае я обнаружил, что из-за неправильной конфигурации maven jar hibernate-entitymanager не был включен в качестве зависимости, даже если это была временная зависимость другого модуля.
источник
Если вы используете Eclipse, убедитесь, что шаблон исключения не удаляет ваши
persistence.xml
из исходных папок на пути сборки.MyProject/src/main/java -> Excluded: <your_pattern>
узле дерева
Excluded: (None)
, выбрав узел и нажав кнопку « Изменить ...» слева.источник
Я несколько лет опаздываю на вечеринку, но я столкнулся с тем же исключением, пытаясь заставить Hibernate 3.5.1 работать с HSQLDB и настольной JavaFX-программой. Я получил его на работу с помощью этой темы и много проб и ошибок. Кажется, вы получаете эту ошибку для целого ряда проблем:
Я попытался создать примеры учебников по гибернации, но поскольку я использовал Java 10, я не смог заставить их легко создавать и запускать. Я отказался от этого, не очень желая тратить время на решение своих проблем. Настройка файла module-info.java (Jigsaw) - это еще одна новинка, которую многие люди еще не обнаружили.
Несколько сбивает с толку то, что эти (ниже) были единственными двумя файлами, которые мне были нужны в моем файле build.gradle. В документации Hibernate не совсем ясно, какие именно Jar-файлы вам нужно включить. Entity-manager вызывал путаницу и больше не требуется в последней версии Hibernate, как и javax.persistence-api. Обратите внимание, я использую здесь Java 10, поэтому мне пришлось включить jaxb-api, чтобы обойти некоторые ошибки xml-bind, а также добавить запись для модуля постоянства java в мой файл module-info.java.
build.gradle
Module-info.java
В hibernate 5.3.1 вам не нужно указывать провайдера ниже в вашем файле persistence.xml. Если он не указан, по умолчанию выбирается поставщик Hibernate.
Файл persistence.xml должен находиться в правильном каталоге, поэтому:
Проход по исходному коду гибернации в отладчике Intellij, где он проверяет диалект, также вызывал точно такое же исключение из-за отсутствия свойства диалекта в файле persistence.xml. Я добавил это (добавьте правильный для вашего типа БД):
После этого я по-прежнему получал то же исключение, поэтому при повторном обходе отладчика в Intellij у тестовой сущности, которую я пытался сохранить (простой пример родитель-потомок), отсутствовали аннотации для отношений OneToMany, ManyToOne. Я исправил это, и исключение ушло, и мои сущности сохранились в порядке.
Вот мой полный окончательный файл persistence.xml:
Я, вероятно, потратил около половины дня на этот драгоценный камень. Я бы посоветовал начать очень просто - с одного тестового объекта с одним или двумя полями, так как кажется, что это исключение может иметь много причин.
источник
Угловой случай: если вы используете m2Eclipse, он автоматически вставляет исключения в ваши папки ресурсов. Затем, когда вы попытаетесь запустить тесты в eclipse, последующее отсутствие файла persistence.xml приведет к этой ошибке.
источник
Убедитесь, что вы создали файл persistence.xml в папке 'src'. Я создал в папке проекта, и это была моя проблема.
источник
Если вы используете Maven, возможно, он не ищет нужное место для папки META-INF. Другие упоминали о копировании папки, но другой способ, который мне помог, состоял в том, чтобы сообщить Maven, где его искать, используя
<resources>
тег. Смотрите: http://maven.apache.org/plugins/maven-resources-plugin/examples/resource-directory.html.источник
Это происходит, когда менеджер сущностей пытается указать много постоянных единиц. Сделайте следующие шаги:
источник
Я столкнулся с той же проблемой, но на EclipseLink версии 2.5.0 .
Я решил свою проблему, добавив еще один файл JAR, который был обязательно ( javax.persistence_2.1.0.v201304241213.jar.jar );
Необходимые
фляги : - javax.persistence_2.1.0.v201304241213.jar
- eclipselink.jar
- jdbc.jar (в зависимости от используемой базы данных).
Надеюсь, это поможет.
источник
У меня также была эта ошибка, но проблема заключалась в URI пространства имен в
persistence.xml
.Я заменил
http://xmlns.jcp.org/xml/ns/persistence
наhttp://java.sun.com/xml/ns/persistence
и версию 2.1 на 2.0.Это сейчас работает.
источник
Вам нужно добавить hibernate-entitymanager-x.jar в путь к классам.
В Hibernate 4.x, если jar присутствует, нет необходимости добавлять org.hibernate.ejb.HibernatePersistence в файле persistence.xml.
источник
На вопрос уже дан ответ, но просто хотел опубликовать отзыв, который меня поддерживал. Это исключение выдается после предыдущих ошибок. Я получил это:
Хотя я изменил файл persistence.xml, добавив новое имя свойства:
После сообщения об устаревшем имени свойства я получил то же исключение PersistenceException, что и выше, и целую строку исключений. Мой совет: обязательно проверьте начало колбасы исключения.
Кажется, есть ошибка в Glassfish v2.1.1, когда повторные развертывания или отмены развертывания и развертывания не обновляют файл persistence.xml, который где-то кэшируется. Я должен был перезагрузить сервер, и тогда это работало.
источник
В OSGi-контексте необходимо перечислить ваши единицы персистентности в файле MANIFEST.MF пакета, например
В противном случае JPA-пакет не будет знать, что ваш пакет содержит единицы сохраняемости.
См. Http://wiki.eclipse.org/EclipseLink/Examples/OSGi/Developing_with_EclipseLink_OSGi_in_PDE .
источник
Вам нужны следующие jar-файлы в classpath:
источник
Я просто скопировал META-INF в src и работал!
источник
Hibernate 5.2.5
Jar-файлы, необходимые в пути к классам. Это находится в требуемой папке Hibernate 5.2.5 Final Release. Его можно скачать с http://hibernate.org/orm/downloads/
Создайте XML-файл «persistence.xml» в
YourProject / SRC / META-INF / persistence.xml
persistence.xml
EntityManagerFactor = Persistance.createEntityManagerFactory ("образец"); , «образец» может быть изменен в соответствии с вашим соглашением об именах.
Теперь создайте класс Entity. с именем согласно моему примеру UserDetail, в пакете org.pramod.data.object
UserDetail.java
Теперь создайте класс с методом main.
HibernateTest.java
Выход будет
источник
В моем случае ранее я использовал идею для создания сущности по схеме базы данных, и
persistence.xml
она автоматически создается вsrc/main/java/META-INF
соответствии с https://stackoverflow.com/a/23890419/10701129 , я перемещаю ее вsrc/main/resources/META-INF
, также помеченную META-INF как исходный корень. Меня устраивает.Но просто пометка оригинального META-INF (то есть src / main / java / META-INF) как исходного корня не работает, что меня смущает.
и это структура:
источник
Если
Persistence.createEntityManagerFactory("JPAService")
в разных классах есть разные имена, вы получите ошибку. Путем рефакторинга можно получить разные имена, что было в моем случае. В одном классе генерируется автоматическиPersistence.createEntityManagerFactory("JPAService")
вprivate void initComponents()
, ContactsTable класс отличался отPersistence.createEntityManagerFactory("JPAServiceExtended")
в классе DBManager.источник
Моя проблема была решена путем добавления информации в файл persistence.xml, например,
<provider>org.eclipse.persistence.jpa.PersistenceProvider</provider>
и затем убедившись, что у вас есть библиотека в classpath, например, в Maven добавьте зависимость, напримеристочник
Проверьте постоянное имя устройства
источник
В моем случае речь шла об ошибке в двух свойствах, как показано ниже. Когда я их изменил, «Отсутствует поставщик сохраняемости для EntityManager с именем» исчез.
Таким образом, вы можете попробовать проверить соединение со своими свойствами, чтобы проверить, все ли правильно.
Странная ошибка, я был полностью растерян из-за этого.
источник
Попробуйте также скопировать файл persistence.xml вручную в папку
<project root>\bin\META-INF
. Это исправило проблему в Eclipse Neon сEclipseLink 2.5.2
использованием простого проекта плагина.источник
Была такая же проблема, но на самом деле это сработало для меня:
NB: команда maven выше переустановит все ваши зависимости проекта с нуля. Ваша консоль будет загружена подробными журналами из-за сетевого запроса, который делает maven.
источник