Как получить Hibernate + javax.persistence через Maven2 pom.xml

Я новичок в Maven2 и пишу pom.xml. Теперь я хочу, чтобы Hibernate и javax.persistence разрешили это:

import javax.persistence.Entity;
...
import org.hibernate.annotations.Fetch;
...

Что нужно было сделать? Я написал в своем pom.xml:

<dependency>
    <groupId>org.hibernate</groupId>
    <artifactId>hibernate</artifactId>
    <version>3.5.6-Final</version>
</dependency>

Но я получаю ошибку (у меня уже есть некоторые другие зависимости, но Hibernate не работает):

11.10.10 13:19:53 MESZ: Refreshing [/testProject/pom.xml]
11.10.10 13:19:54 MESZ: Missing artifact org.hibernate:hibernate:jar:3.5.6-Final:compile
11.10.10 13:19:54 MESZ: Maven Builder: AUTO_BUILD 
11.10.10 13:19:55 MESZ: Maven Builder: AUTO_BUILD

Итак, что здесь не так? Почему он не знает артефакт?

Заранее спасибо и с наилучшими пожеланиями.


person Tim    schedule 11.10.2010    source источник


Ответы (1)


Объявите репозиторий JBoss:

<project>
  ...
  <repositories>
    <repository>
      <id>repository.jboss.org-public</id>
      <name>JBoss repository</name>
      <url>https://repository.jboss.org/nexus/content/groups/public</url>
    </repository>
    ...
  </repositories>
  ...
</project>

И тогда следующая зависимость:

<project>
  ...
  <dependencies>
    <dependency>
      <groupId>org.hibernate</groupId>
      <artifactId>hibernate-entitymanager</artifactId>
      <version>3.5.6-Final</version>
    </dependency>
    ...
  </dependencies>
  ...
</project>

И это все, что вам нужно, остальные зависимости будут подтягиваться транзитивно.

person Pascal Thivent    schedule 11.10.2010
comment
Спасибо за ваш ответ, но я получаю: 11.10.10 13:27:50 MESZ: [ПРЕДУПРЕЖДЕНИЕ] Отсутствует POM для org.hibernate:hibernate-entitymanager:jar:3.5.6-Final 11.10.10 13:27:51 MESZ : Отсутствует артефакт org.hibernate:hibernate-entitymanager:jar:3.5.6-Final:compile - person Tim; 11.10.2010
comment
@Tim О, я предполагал, что у вас объявлен репозиторий JBoss. Я обновил свой ответ. - person Pascal Thivent; 11.10.2010
comment
Хорошо, теперь это работает, javax.persistence.* может быть разрешен, но не, например, import org.hibernate.annotations.Fetch; Извините, после перезапуска моего рабочего стола проблема решена! - person Tim; 11.10.2010
comment
@ Тим, ты все равно не должен смешивать аннотации гибернации с аннотациями JPA. Нет смысла использовать открытый стандарт, такой как JPA, если вы собираетесь добавлять проприетарный код. Если вам нужны функции спящего режима, которых нет в JPA, используйте простой спящий режим. Но если вы используете JPA, научитесь жить с его ограничениями. - person Sean Patrick Floyd; 11.10.2010
comment
Итак, мне не нужен javax.persistence.*? Я могу использовать его с чистым Hibernate? - person Tim; 11.10.2010
comment
вы можете, да, но тогда вы привязываете себя к одному поставщику постоянства. Лично я предпочитаю использовать независимый от поставщика код jpa. если вы выберете чистый спящий режим, замените hibernate-entitymanager на hibernate-core в приведенных выше фрагментах pom. - person Sean Patrick Floyd; 11.10.2010
comment
Видимо теперь нет необходимости указывать репозиторий JBoss, так как пакеты добавлены в Maven Central< /а> - person stivlo; 18.11.2011