Вы используете реализацию JPA 1.0, вам необходимо предоставить JPA 1.0-совместимый
orm.xml
(обратите внимание на атрибут версии среди прочего):
<?xml version="1.0" encoding="UTF-8"?>
<entity-mappings
xmlns="http://java.sun.com/xml/ns/persistence/orm"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://java.sun.com/xml/ns/persistence/orm http://java.sun.com/xml/ns/persistence/orm_1_0.xsd"
version="1.0">
...
</entity-mappings>
Ваш, вероятно, выглядит так:
<?xml version="1.0" encoding="UTF-8"?>
<entity-mappings
xmlns="http://java.sun.com/xml/ns/persistence/orm"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://java.sun.com/xml/ns/persistence/orm http://java.sun.com/xml/ns/persistence/orm_2_0.xsd"
version="2.0">
...
</entity-mappings>
Что правильно ... если вы используете провайдера JPA 2.0.
Но, честно говоря, я не знаю, почему вы предоставляете orm.xml
, при использовании аннотаций вам обычно не нужен файл отображения XML.
Ссылки
- JPA 1.0 Спецификация
- JPA 2.0 Спецификация
Спасибо за ваш ответ и извините за orm.xml. Моя задача показать местоположение файла persistence.xml. Я не использую отображение XML. Этот orm.xml генерируется автоматически. Должен ли я удалить этот файл?
Я бы попытался удалить orm.xml
, действительно, entity-mappings
является корневым элементом orm.xml
, вот в чем ошибка.
Что вы подразумеваете под "если вы используете провайдера JPA 2.0"? Провайдер значит, Hibernate ??
JPA - это просто API. Чтобы использовать JPA, вам нужна реализация этого API, и такие реализации называются поставщиками постоянства (EcliseLink, Hibernate, OpenJPA). В вашем случае вы используете Hibernate EntityManager 3.4.0.GA, который является реализацией JPA 1.0.
Что мне нужно сделать, чтобы перейти на JPA 2.0? добавив javax.persistence_2.0.0.jar или изменив спящий режим, использующий JPA 2.0 ??
Оба, вам придется использовать Hibernate EntityManager 3.5+ (и его зависимости, включая javax.persistence_2.0.0.jar).