Какую банку я должен включить, чтобы использовать пакет javax.persistence в приложении на основе гибернации?

Можно ли взять его из проекта Glassfish (glassfish-persistence-api) или, может быть, есть банка Hibernate?


person Sergey    schedule 10.04.2009    source источник
comment
+1 - Я столкнулся с той же проблемой, поэтому вы избавили меня от многих хлопот, пытаясь понять это.   -  person Jason S    schedule 20.06.2009


Ответы (7)



Если вы используете maven, добавление зависимости ниже должно работать

<dependency>
    <groupId>javax.persistence</groupId>
    <artifactId>persistence-api</artifactId>
    <version>1.0</version>
</dependency>
person Bahadır Yağan    schedule 24.08.2011
comment
Я использую intellij, и он говорит мне, что не может найти javax.persistence. Любые идеи? - person Goot; 02.03.2014

Вы можете использовать файл ejb3-persistence.jar, входящий в состав гибернации. Этот jar включает только пакет javax.persistence.

person alves    schedule 28.10.2009

В последнем и лучшем Hibernate мне удалось устранить зависимость, включив файл hibernate-jpa-2.0-api-1.0.0.Final.jar в каталог lib/jpa. Я не нашел банку ejb-persistence в самой последней загрузке.

person Dave Shah    schedule 07.04.2011

hibernate.jar и hibernate-entitymanager.jar содержат только пакеты org.hibernate.*. Так что вы должны взять его из проекта Glassfish.

person Jerrish Varghese    schedule 10.04.2009

Для JPA 2.1 пакет javax.persistence можно найти здесь:

<dependency>
   <groupId>org.hibernate.javax.persistence</groupId>
   <artifactId>hibernate-jpa-2.1-api</artifactId>
   <version>1.0.0.Final</version>
</dependency>

См.: hibernate-jpa-2.1-api на Maven Central Похоже, шаблон меняет имя артефакта по мере изменения версии JPA. Если это продолжится, можно ожидать появления новых версий в Maven Central здесь: Версии JPA в спящем режиме

Вышеупомянутый API JPA 2.1 можно использовать в сочетании с Hibernate 4.3.7, а именно:

<dependency>
   <groupId>org.hibernate</groupId>
   <artifactId>hibernate-entitymanager</artifactId>
   <version>4.3.7.Final</version>
</dependency>
person antonycc    schedule 04.12.2014

В целом, я согласен с приведенными выше ответами, которые рекомендуют добавить зависимость от maven, но я предпочитаю следующее решение.

Добавьте зависимость с классами API для полного профиля JavaEE:

<properties>
    <javaee-api.version>7.0</javaee-api.version>
    <hibernate-entitymanager.version>5.1.3.Final</hibernate-entitymanager.version>
</properties>

<depencies>
    <dependency>
        <groupId>javax</groupId>
        <artifactId>javaee-api</artifactId>
        <version>${javaee-api.version}</version>
        <scope>provided</scope>
    </dependency>
</dependencies>

Также добавьте зависимость от конкретного провайдера JPA, например, предложенного antonycc:

<dependency>
    <groupId>org.hibernate</groupId>
    <artifactId>hibernate-entitymanager</artifactId>
    <version>${hibernate-entitymanager.version}</version>
</dependency>

Примечание <scope>provided</scope> в разделе зависимостей API: это означает, что соответствующий jar не будет экспортироваться в lib/ артефакта, а будет предоставлен сервером приложений. Убедитесь, что ваш сервер приложений реализует указанную версию API JavaEE.

person yaromir    schedule 02.08.2015