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 :

Problème avec hibernate : IllegalArgumentException


Sujet :

JPA Java

  1. #1
    Membre averti
    Homme Profil pro
    Étudiant
    Inscrit en
    Mars 2007
    Messages
    30
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mars 2007
    Messages : 30
    Par défaut Problème avec hibernate : IllegalArgumentException
    Salut,
    Alors que je suivais le cours de Serge Tahé JPA 5 (http://tahe.ftp-developpez.com/fichiers-archive/jpa.pdf), et dans un code que j'éssayais, l'erreur suivante est apparue :

    Exception in thread "main" java.lang.IllegalArgumentException: Unknown entity: entites.Personne
    at org.hibernate.ejb.AbstractEntityManagerImpl.persist(AbstractEntityManagerImpl.java:215)
    at tests.InitDB.main(InitDB.java:31)

    La structure de mon projet est la suivante :

    +src
    +entites
    Personne.java
    +tests
    InitDB.java
    main.java
    META-INF
    persistence.xml

    L'erreur s'est produite lorsque j'ai essayé d'exécuter "InitDB.java", voici son code :


    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 tests;
     
    import java.text.ParseException;
    import java.text.SimpleDateFormat;
     
    import javax.persistence.EntityManager;
    import javax.persistence.EntityManagerFactory;
    import javax.persistence.EntityTransaction;
    import javax.persistence.Persistence;
     
    import entites.Personne;
     
    public class InitDB {
    	// constantes
    	private final static String TABLE_NAME = "jpa01_personne";
     
    	public static void main(String[] args) throws ParseException {
    		// récupérer un EntityManagerFactory à* partir de l'unité de persistance définie dans persistence.xml
    		EntityManagerFactory emf = Persistence.createEntityManagerFactory("jpa");
    		// récupérer un EntityManager à* partir de l'EntityManagerFactory
    		EntityManager em = emf.createEntityManager();
    		// début transaction
    		EntityTransaction tx = em.getTransaction();
    		tx.begin();
    		// supprimer les éléments de la table PERSONNE
    		em.createNativeQuery("delete from " + TABLE_NAME).executeUpdate();
    		// mettre des éléments dans la table PERSONNE
    		Personne p1 = new Personne("Martin", "Paul", new SimpleDateFormat("dd/MM/yy").parse("31/01/2000"), true, 2);
    		Personne p2 = new Personne("Durant", "Sylvie", new SimpleDateFormat("dd/MM/yy").parse("05/07/2001"), false, 0);
    		// persistance des personnes
    		em.persist(p1);
    		em.persist(p2);
    		// affichage personnes
    		System.out.println("[personnes]");
    		for (Object p : em.createQuery("select p from Personne p order by p.nom asc").getResultList()) {
    			System.out.println(p);
    		}
    		// fin transaction
    		tx.commit();
    		// fin EntityManager
    		em.close();
    		// fin EntityManagerFactory
    		emf.close();
    		// log
    		System.out.println("terminé ...");
    	}
    }
    Le résultat attendu dans le console est le suivant :

    [Personne]
    [2,0,Durant,Sylvie,05/07/2001,false,0]
    [1,0,Martin,Paul,31/01/2000,true,2]
    terminé...

    Consernat le fichier persistence.xml voici son code :
    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
     
    <?xml version="1.0" encoding="UTF-8"?>
    <persistence version="1.0" xmlns="http://java.sun.com/xml/ns/persistence">
    	<persistence-unit name="jpa" transaction-type="RESOURCE_LOCAL">
    		<!--  provider -->
    		<provider>org.hibernate.ejb.HibernatePersistence</provider>
    		<properties>
    			<!-- Classes persistantes -->
    			<property name="hibernate.archive.autodetection" value="class, hbm" />
    			<!-- logs SQL
    				<property name="hibernate.show_sql" value="true"/>
    				<property name="hibernate.format_sql" value="true"/>
    				<property name="use_sql_comments" value="true"/>
    			-->
    			<!-- connexion JDBC -->
    			<property name="hibernate.connection.driver_class" value="com.mysql.jdbc.Driver" />
    			<property name="hibernate.connection.url" value="jdbc:mysql://localhost:3306/jpa" />
    			<property name="hibernate.connection.username" value="jpa" />
    			<property name="hibernate.connection.password" value="jpa" />
    			<!--  création automatique du schéma -->
    			<property name="hibernate.hbm2ddl.auto" value="create" />
    			<!-- Dialecte -->
    			<property name="hibernate.dialect" value="org.hibernate.dialect.MySQL5InnoDBDialect" />
    			<!--  propriétés DataSource c3p0 -->
    			<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>
    Je tiens à signaler que les jars réquis dans pour le projet sont aussi ajoutés.

    Merci pour votre aide

  2. #2
    Membre expérimenté
    Inscrit en
    Mai 2004
    Messages
    335
    Détails du profil
    Informations forums :
    Inscription : Mai 2004
    Messages : 335
    Par défaut
    lors de l'utilisation d'un orm avec JAVA Se, tu doit preciser tes entities dans le fichier persistence.xml
    ajoute
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <class>entites.Personne</class>

  3. #3
    Membre averti
    Inscrit en
    Juin 2007
    Messages
    17
    Détails du profil
    Informations forums :
    Inscription : Juin 2007
    Messages : 17
    Par défaut
    C'est pas tout a fait vrai.
    En java SE, tu peux faire de l'auto détection (du moins avec Hibernate) ( testé et validé ). Et comme y'a bien:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <property name="hibernate.archive.autodetection" value="class, hbm" />
    Les entites sont automatiquement découvertes..


    Juste comme ca, as tu bien mis le "@Entity" sur ta classe personne ?

  4. #4
    Membre averti
    Inscrit en
    Février 2009
    Messages
    20
    Détails du profil
    Informations forums :
    Inscription : Février 2009
    Messages : 20
    Par défaut
    Bonjour

    j'ai exactement le meme probleme et le "@Entity" est bien la


    j'ai detecter la source du probleme mais je sais pas comment faire pour le resouldre

    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
    16:46:22,437  INFO Version:15 - Hibernate EntityManager 3.2.0.CR3
    16:46:22,468  INFO Version:15 - Hibernate Annotations 3.2.0.CR3
    16:46:22,468  INFO Environment:500 - Hibernate 3.2.0.cr5
    16:46:22,484  INFO Environment:533 - hibernate.properties not found
    16:46:22,484  INFO Environment:667 - Bytecode provider name : cglib
    16:46:22,484  INFO Environment:584 - using JDK 1.4 java.sql.Timestamp handling
    16:46:22,656  WARN FileZippedJarVisitor:37 - Unable to find file (ignored): file:/C:/Program%20Files/Apache%20Software%20Foundation/Tomcat%206.0/webapps/hibernate-personnes-entites/bin
    java.io.FileNotFoundException: C:\Program Files\Apache Software Foundation\Tomcat 6.0\webapps\hibernate-personnes-entites\bin (Accès refusé)
    	at java.util.zip.ZipFile.open(Native Method)
    	at java.util.zip.ZipFile.<init>(Unknown Source)
    	at java.util.jar.JarFile.<init>(Unknown Source)
    	at java.util.jar.JarFile.<init>(Unknown Source)
    	at org.hibernate.ejb.packaging.FileZippedJarVisitor.doProcessElements(FileZippedJarVisitor.java:34)
    	at org.hibernate.ejb.packaging.JarVisitor.getMatchingEntries(JarVisitor.java:215)
    	at org.hibernate.ejb.Ejb3Configuration.addMetadataFromVisitor(Ejb3Configuration.java:253)
    	at org.hibernate.ejb.Ejb3Configuration.configure(Ejb3Configuration.java:229)
    	at org.hibernate.ejb.HibernatePersistence.createEntityManagerFactory(HibernatePersistence.java:120)
    	at javax.persistence.Persistence.createEntityManagerFactory(Persistence.java:51)
    	at javax.persistence.Persistence.createEntityManagerFactory(Persistence.java:33)
    	at tests.InitDB.main(InitDB.java:19)

  5. #5
    Membre averti
    Inscrit en
    Février 2009
    Messages
    20
    Détails du profil
    Informations forums :
    Inscription : Février 2009
    Messages : 20
    Par défaut
    j'ai trouvé la solution

    apparament il ya un bug , le programme ne marche pas quand le chemin du dossier source du projet comporte un espace ( quand le nom d'un des dossiers parents du projet contien un espace )

    j ai juste creé le meme projet sous "C:\personne-entites" et ca a marché sans problemes

Discussions similaires

  1. Problème avec hibernate et MySQL!
    Par sofien dans le forum Outils
    Réponses: 5
    Dernier message: 27/08/2008, 09h06
  2. Les problémes avec Hibernate
    Par hichem_enis dans le forum Struts 1
    Réponses: 7
    Dernier message: 11/04/2008, 13h00
  3. Problème avec Hibernate
    Par ISID dans le forum Hibernate
    Réponses: 13
    Dernier message: 05/10/2007, 12h27
  4. Problème avec Hibernate synchronizer
    Par jason69 dans le forum Hibernate
    Réponses: 2
    Dernier message: 27/08/2007, 11h35
  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