views:

163

answers:

1

Hello!

I am a newbie with Maven2 and I write a pom.xml. Now I want to get Hibernate and javax.persistence to resolve this:

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

What needed to be done? I wrote in my pom.xml:

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

But I get an error (I already get some other dependencies, but Hibernate does not work):

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

So, what's wrong here? Why it does not know the artifact?

Thank you in advance & Best Regards.

+2  A: 

Declare the JBoss repository:

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

And then the following dependency:

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

And that's all your need, the other dependencies will be pulled transitively.

Pascal Thivent
Thank you for your answer, but I get: 11.10.10 13:27:50 MESZ: [WARN] Missing POM for org.hibernate:hibernate-entitymanager:jar:3.5.6-Final11.10.10 13:27:51 MESZ: Missing artifact org.hibernate:hibernate-entitymanager:jar:3.5.6-Final:compile
Tim
@Tim Oh, I was assuming you had the JBoss repository declared. I've updated my answer.
Pascal Thivent
Okay, now it works, the javax.persistence.* can be resolved, but not for example the "import org.hibernate.annotations.Fetch;" Sorry, after restarting my workbench, it is resolved!
Tim
@Tim you shouldn't mix hibernate annotations with JPA annotations anyway. There's no point in using an open standard like JPA if you're going to add proprietary code. If you want hibernate features that JPA doesn't have, use plain hibernate. But if you use JPA, learn to live with it's limits.
seanizer
Okay, so I do not need javax.persistence.*? I can use it with pure Hibernate?
Tim
you *can*, yes, but then you tie yourself to one persistence provider. I personally prefer to use vendor-neutral jpa code. if you do choose pure hibernate, replace `hibernate-entitymanager` with `hibernate-core` in the above pom snippets.
seanizer