IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

JPA Java Discussion :

[Maven / Eclipse / JPA / Hibernate] Problème avec le persistence.xml


Sujet :

JPA Java

  1. #1
    Membre à l'essai
    Femme Profil pro
    Inscrit en
    Août 2011
    Messages
    16
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations professionnelles :
    Secteur : Industrie

    Informations forums :
    Inscription : Août 2011
    Messages : 16
    Points : 14
    Points
    14
    Par défaut [Maven / Eclipse / JPA / Hibernate] Problème avec le persistence.xml
    Bonjour

    Eh bien oui, encore une question sur le persistence.xml par un débutant. Pour vous rassurer, j'ai cherché par moi-même, dans des bouquins, sur internet, fait des essais mais sans succès.

    Contexte
    - Utilisation de maven et import dans eclipse du projet créé en ligne de commande.
    - Création d'une entity toute simple avec juste des int ou des string (on commence tout doucement)
    - Création d'une classe avec un main juste pour tester si je peux écrire en base de donnée

    Problème
    Le fameux
    Exception in thread "main" javax.persistence.PersistenceException: No Persistence provider for EntityManager named testPU
    at javax.persistence.Persistence.createEntityManagerFactory(Persistence.java:69)
    at javax.persistence.Persistence.createEntityManagerFactory(Persistence.java:47)
    at org.test.Main.main(Main.java:18)
    Alors d'après ce que j'ai compris, cette erreur est due au fait que le persistence.xml n'est pas trouvé. Voici donc ce que j'ai tenté:
    • mettre le persistence.xml dans src\main\resources\META-INF
    • mettre le META-INF dans le classpath eclipse via clic droit sur le projet, properties, java build path, onglet "sources", add folder entity/src/main/resources/META-INF
    • j'ai voulu tester en ligne de commande mais je ne suis pas arrivée à générer un jar executable avec maven donc il trouvait pas le main :'(


    Au début j'avais regardé dans le détail le contenu du persistence.xml, essayer avec plusieurs, regarder à quoi correspond les différentes déclaration pour me rendre compte que c'était peut être le fichier qui n'était même pas lu...

    persistence.xml
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    <?xml version="1.0" encoding="UTF-8"?>  
    <persistence version="1.0" xmlns="http://java.sun.com/xml/ns/persistence"   
        xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"   
        xsi:schemaLocation="http://java.sun.com/xml/ns/persistence http://java.sun.com/xml/ns/persistence/persistence_1_0.xsd">
     
    	<persistence-unit name="testPU">
    	<properties>
    	<!--
    	<property name="hibernate.ejb.cfgfile" value="/hibernate.cfg.xml"/>
    	<property name="hibernate.hbm2ddl.auto" value="create"/>
    	-->
    	<property name="hibernate.archive.autodetection" value="class, hbm"/>
    	<property name="hibernate.show_sql" value="true"/>
    	<property name="hibernate.connection.driver_class" value="com.mysql.jdbc.Driver"/>
    	<!--  <property name="hibernate.connection.password" value="<PASSWORD>"/>-->
    	<property name="hibernate.connection.url" value="jdbc:mysql://localhost:3306/testPU"/>
    	<property name="hibernate.connection.username" value="root"/>
    	<property name="hibernate.dialect" value="org.hibernate.dialect.MySQLDialect"/>
    	<property name="hibernate.c3p0.min_size" value="5"/>
    	<property name="hibernate.c3p0.max_size" value="20"/>
    	<property name="hibernate.c3p0.timeout" value="300"/>
    	<property name="hibernate.c3p0.max_statements" value="50"/>
    	<property name="hibernate.c3p0.idle_test_period" value="3000"/>
    	</properties>
    	</persistence-unit>    
     
    </persistence>
    Entity
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
     
    package org.test;
     
    import java.io.Serializable;
     
    import javax.persistence.Entity;
    import javax.persistence.GeneratedValue;
    import javax.persistence.GenerationType;
    import javax.persistence.Id;
     
    @Entity
    public class People implements Serializable{
     
    	@Id
    	@GeneratedValue (strategy = GenerationType.AUTO)
    	public int id;
    	public String name;
    	public int yearBirth;
     
    	//
    	// constructeur par défaut
    	//
    	public People() {
    	}
     
    	//
    	// getters et setters
    	//
    	public int getId() {
    		return id;
    	}
    	public void setId(int id) {
    		this.id = id;
    	}
    	public String getName() {
    		return name;
    	}
    	public void setName(String name) {
    		this.name = name;
    	}
    	public int getYearBirth() {
    		return yearBirth;
    	}
    	public void setYearBirth(int yearBirth) {
    		this.yearBirth = yearBirth;
    	}
     
    }
    Test de l'entity :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
     
    package org.test;
     
    import java.util.List;
     
    import javax.persistence.EntityManager;
    import javax.persistence.EntityManagerFactory;
    import javax.persistence.Persistence;
    import javax.persistence.Query;
    import javax.persistence.TypedQuery;
     
    import org.test.People;
     
    public class Main {
        public static void main(String[] args) {
            // Open a database connection
            // (create a new database if it doesn't exist yet):
            EntityManagerFactory emf =
                Persistence.createEntityManagerFactory("testPU");
            EntityManager em = emf.createEntityManager();
     
            // Store 5 People objects in the database:
            em.getTransaction().begin();
            for (int i = 0; i < 5; i++) {
                People p = new People();
                p.name = "name"+i;
                p.yearBirth = i;
                em.persist(p);
            }
            em.getTransaction().commit();
     
            // Find the number of Point objects in the database:
            Query q1 = em.createQuery("SELECT COUNT(p) FROM Pet p");
            System.out.println("Total People: " + q1.getSingleResult());
     
            // Retrieve all the Point objects from the database:
            TypedQuery<People> query =
                em.createQuery("SELECT p FROM People p", People.class);
            List<People> results = query.getResultList();
            for (People p : results) {
                System.out.println(p);
            }
     
            // Close the database connection:
            em.close();
            emf.close();
        }
    }
    Détail version
    • Base de donnée fournie par uwamp : mysql-5.5.9
    • Eclipse service helios SR2
    • Apache Maven 2.0.11 (r909250; 2010-02-12 06:55:50+0100)
    • Java version: 1.6.0_29
    • Java home: C:\Program Files\Java\jdk1.6.0_29\jre


    Merci d'avance pour vos suggestions


    PS. je suis au boulot (intercontrat power, on s'occupe comme on peut) donc j'ai rajouté les librairies hibernate à la main dans eclipse parce que sinon maven passe pas le proxy (d'où l'utilisation de uwamp qui ne nécessite pas d'installation).

  2. #2
    Membre à l'essai
    Femme Profil pro
    Inscrit en
    Août 2011
    Messages
    16
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations professionnelles :
    Secteur : Industrie

    Informations forums :
    Inscription : Août 2011
    Messages : 16
    Points : 14
    Points
    14
    Par défaut
    Je vais voir pour passer le proxy en utilisant
    http://maven.apache.org/guides/mini/guide-proxies.html et
    http://blog.courtine.org/2012/01/15/...ys-des-proxys/

    Et hop des pommes, des pommes !

    D:\temp\project\pom.xml
    Code xml : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
     
    <?xml version="1.0" encoding="UTF-8"?>
    <project xmlns="http://maven.apache.org/POM/4.0.0"
        xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
        xsi:schemaLocation="
            http://maven.apache.org/POM/4.0.0
            http://maven.apache.org/xsd/maven-4.0.0.xsd">
     
      <modelVersion>4.0.0</modelVersion>
      <groupId>org.main</groupId>
      <artifactId>main-parent</artifactId>
      <version>${main.version}</version>
      <packaging>pom</packaging>
      <name>main-parent</name>
     
      <modules>
      	<module>maven-config</module>
        <module>entity</module>
      </modules>
     
    </project>

    D:\temp\project\entity\pom.xml
    Code xml : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
     
    <?xml version="1.0" encoding="UTF-8"?>
    <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    	xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
      <modelVersion>4.0.0</modelVersion>
     
    <parent>
    	<groupId>org.main</groupId>
    	  <artifactId>main-parent</artifactId>
    	  <version>${main.version}</version>
    	</parent>  
     
      <groupId>org.main.entity</groupId>
      <artifactId>entity</artifactId>
      <version>${main.version}</version>
      <name>entity</name>
     
      <dependencies>
    	  <dependency>
    		<groupId>org.hibernate</groupId>
    		<artifactId>hibernate-core</artifactId>
    		<version>4.0.1.Final</version>
    	  </dependency>
      </dependencies>  
    </project>

    D:\temp\project\maven-config\pom.xml
    Code xml : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    <?xml version="1.0" encoding="UTF-8"?>
    <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    	xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
      <modelVersion>4.0.0</modelVersion>
     
      <groupId>org.test</groupId>
      <artifactId>maven-config</artifactId>
      <version>1.0.0</version>
      <packaging>pom</packaging>
      <name>maven-config</name>
     
      <properties>
        <!-- declaration des numeros de version-->  
        <main.version>1.0.0</main.version>
    	<entity.version>1.0.0</entity.version>
      </properties>
     
      <build>
        <!-- Rewrite explicite de toute la configuration par defaut des repertoires   -->
        <directory>build</directory>
        <outputDirectory>build/classes</outputDirectory>
        <finalName>${artifactId}-${version}</finalName>
     
        <plugins>
    	  	<plugin>
    		<artifactId>maven-compiler-plugin</artifactId>
    		<version>2.3.2</version>
    		<configuration>
    			<source>1.6</source>
    			<target>1.6</target>
    		</configuration>
    	</plugin>
        </plugins>
      </build>
     
    </project>

  3. #3
    Membre à l'essai
    Femme Profil pro
    Inscrit en
    Août 2011
    Messages
    16
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations professionnelles :
    Secteur : Industrie

    Informations forums :
    Inscription : Août 2011
    Messages : 16
    Points : 14
    Points
    14
    Par défaut
    Bon, déjà je n'avais pas tous les jar. Le réglage du settings.xml a permis de télécharger ceux qui manquaient.

    Sur eclipse le mvn install passe aussi. Ca, c'est fait

    Par contre, toujours la même erreur à l'éxecution :
    No Persistence provider for EntityManager named testPU

  4. #4
    Membre à l'essai
    Femme Profil pro
    Inscrit en
    Août 2011
    Messages
    16
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations professionnelles :
    Secteur : Industrie

    Informations forums :
    Inscription : Août 2011
    Messages : 16
    Points : 14
    Points
    14
    Par défaut
    Bon ben j'ai créé un jar executable avec maven et même erreur lorsque exécuté en ligne de commande

    Là, je suis perdue completement

  5. #5
    Membre à l'essai
    Femme Profil pro
    Inscrit en
    Août 2011
    Messages
    16
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations professionnelles :
    Secteur : Industrie

    Informations forums :
    Inscription : Août 2011
    Messages : 16
    Points : 14
    Points
    14
    Par défaut
    Nouvelle hypothèse à tester plus finement : les "property name " du persistence.xml ne collent pas exactement aux jar de hibernate

  6. #6
    Membre à l'essai
    Femme Profil pro
    Inscrit en
    Août 2011
    Messages
    16
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations professionnelles :
    Secteur : Industrie

    Informations forums :
    Inscription : Août 2011
    Messages : 16
    Points : 14
    Points
    14
    Par défaut
    Nouvelle hypothèse : manque un/des jar. J'ai réussi à adapter ça à EclipseLink

  7. #7
    Membre à l'essai
    Femme Profil pro
    Inscrit en
    Août 2011
    Messages
    16
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations professionnelles :
    Secteur : Industrie

    Informations forums :
    Inscription : Août 2011
    Messages : 16
    Points : 14
    Points
    14
    Par défaut
    Bon et bien il manquait des jar...

    Code xml : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
        <dependency>
        	<groupId>org.hibernate</groupId>
        	<artifactId>hibernate-entitymanager</artifactId>
        	<version>4.0.1.Final</version>
        </dependency>
        <dependency>
        	<groupId>mysql</groupId>
        	<artifactId>mysql-connector-java</artifactId>
        	<version>5.1.21</version>
        </dependency>

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Problème avec le persistence.xml
    Par Samildanach dans le forum JPA
    Réponses: 2
    Dernier message: 04/11/2008, 14h27
  2. [HIBERNATE] Problème avec ant
    Par DarkWark dans le forum Hibernate
    Réponses: 1
    Dernier message: 04/06/2006, 19h55
  3. [Hibernate] Problème avec xDoclet
    Par srvremi dans le forum Hibernate
    Réponses: 1
    Dernier message: 24/05/2006, 12h34
  4. [Eclipse 3.1] Probléme avec l'installation d'ECLIPSE
    Par faressam dans le forum Eclipse Java
    Réponses: 4
    Dernier message: 01/04/2006, 00h41
  5. [Hibernate] Problème avec Hibernate et Eclipse 3
    Par theseuby dans le forum Eclipse Java
    Réponses: 1
    Dernier message: 30/03/2006, 21h31

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo