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

Hibernate Java Discussion :

persistance, getResultList avec hibernate/derby


Sujet :

Hibernate Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Inscrit en
    Juillet 2003
    Messages
    81
    Détails du profil
    Informations forums :
    Inscription : Juillet 2003
    Messages : 81
    Par défaut persistance, getResultList avec hibernate/derby
    Bonjour!

    je deviens fou avec la persistance et hibernate!!

    sous netbeans, il y a un exemple qui fonctionne a merveille avec la persistance derby.
    Pour mon projet, je me suis basé dessus et j'ai créé ma persistance via hibernate.

    pour l'ajout en base, pas de soucis, pour la recherche unique pas de soucis, mais pour faire une liste de ma table, c'est carrement casse tête...

    voici mon 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
        public List<Personne> liste(){
            javax.persistence.EntityManagerFactory emf = javax.persistence.Persistence.createEntityManagerFactory(NOM_PU);
            javax.persistence.EntityManager em = emf.createEntityManager();
            em.getTransaction().begin();
            List<Personne> personnes = null;
            try {
                personnes = em.createQuery("SELECT OBJECT(i) FROM Personne i").getResultList();
            } catch (Exception e) {
                e.printStackTrace();
                em.getTransaction().rollback();
            } finally {
                em.close();
            }
            return personnes;
        }
    en faisant un copier coller de l'exemple et remplacant juste le type d'objet et nom de table, j'obtiens l'erreur suivante :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    Exception in thread "main" java.lang.NoClassDefFoundError: antlr/ANTLRException
            at org.hibernate.hql.ast.ASTQueryTranslatorFactory.createQueryTranslator(ASTQueryTranslatorFactory.java:35)
            at org.hibernate.engine.query.HQLQueryPlan.<init>(HQLQueryPlan.java:74)
            at org.hibernate.engine.query.HQLQueryPlan.<init>(HQLQueryPlan.java:56)
            at org.hibernate.engine.query.QueryPlanCache.getHQLQueryPlan(QueryPlanCache.java:72)
            at org.hibernate.impl.AbstractSessionImpl.getHQLQueryPlan(AbstractSessionImpl.java:133)
            at org.hibernate.impl.AbstractSessionImpl.createQuery(AbstractSessionImpl.java:112)
            at org.hibernate.impl.SessionImpl.createQuery(SessionImpl.java:1623)
            at org.hibernate.ejb.AbstractEntityManagerImpl.createQuery(AbstractEntityManagerImpl.java:93)
            at gescom.dao.PersonneDao.liste(PersonneDao.java:55)
            at gescom.Main.main(Main.java:46)
    bref, apparement hibernate n'arrives pas a faire le mapping entre les resultats et mes objets...


    si par contre je met le code suivant (en mettant ma requete a la main donc) :
    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
        public List<Personne> liste(){
            javax.persistence.EntityManagerFactory emf = javax.persistence.Persistence.createEntityManagerFactory(NOM_PU);
            javax.persistence.EntityManager em = emf.createEntityManager();
            em.getTransaction().begin();
            List<Personne> personnes = null;
            try {
                personnes = em.createNativeQuery("select * from \"GESCOM\".Personne").getResultList();
            } catch (Exception e) {
                e.printStackTrace();
                em.getTransaction().rollback();
            } finally {
                em.close();
            }
            return personnes;
        }
    plus d'erreur!

    par contre, dès que j'essaye de faire accès aux getters de mon objet il me donne l'erreur suivante :

    code faisant accès aux données :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
            List<Personne> personnelist = personneDao.liste();
            System.out.println("3...");
            for (int i=0;i<personnelist.size();i++){
            System.out.println("4"+i+"...");
                System.out.println(personnelist.get(i).getNom());
            }
    l'erreur retournée:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Exception in thread "main" java.lang.ClassCastException: [Ljava.lang.Object;
            at gescom.Main.main(Main.java:52)
    Java Result: 1

    si quelqu'un à une idée, j'ai fais le tour de google sans trouver la solution, pire, cela fonctionne parfaitement dans l'exemple qui n'utilises pas hibernate.

  2. #2
    Membre averti
    Inscrit en
    Juin 2005
    Messages
    45
    Détails du profil
    Informations forums :
    Inscription : Juin 2005
    Messages : 45
    Par défaut
    salut
    je pense que ta besion de library antlr !
    http://www.antlr.org/download.html
    bonne chance !

  3. #3
    Membre confirmé
    Inscrit en
    Juillet 2003
    Messages
    81
    Détails du profil
    Informations forums :
    Inscription : Juillet 2003
    Messages : 81
    Par défaut
    j'ai verifié, elle est bien présente, et ne me pose d'ailleurs pas de probleme pour un persist()...

  4. #4
    Membre confirmé
    Inscrit en
    Juillet 2003
    Messages
    81
    Détails du profil
    Informations forums :
    Inscription : Juillet 2003
    Messages : 81
    Par défaut
    bon, j'ai toujours le problême! et cela ne se passe qu'avec hibernate... si j'utilise la java db, pas de soucis, mais dès que j'essaye avec persistence toplink/hibernate ca coince!

  5. #5
    BsT
    BsT est déconnecté
    Membre éclairé
    Profil pro
    Inscrit en
    Juillet 2004
    Messages
    72
    Détails du profil
    Informations personnelles :
    Localisation : France, Hauts de Seine (Île de France)

    Informations forums :
    Inscription : Juillet 2004
    Messages : 72
    Par défaut
    Hello,

    J'espere que je ne vais pas dire de bétises.

    pour le problème 1 : (createQuery) écoute devvirtual (antlr est en général fournit dans le repertoire lib d'hibernate), c'est clairement un problème de classpath.

    ANTLR est une librairie qui permet d'écrire des parsers, ici elle a permit d'écrire le parser HQL.

    Pour le problème 2 : (createNativeQuery) tu n'as pas le meme problème qu'au point 1 parce c'est du SQL donc il est envoyé "directement" à la base.

    Essaye createNativeQuery("...", Personne.class);

    Pour le ClassCastException je ne connais pas la ligne 32 donc ... le nativeQuery as du envoyé une liste de Object[] mais je ne peux pas t'aider plus.

    Stéphane

Discussions similaires

  1. La persistance des données avec Hibernate
    Par L'aigle de Carthage dans le forum Débuter
    Réponses: 3
    Dernier message: 14/02/2012, 09h02
  2. Réponses: 12
    Dernier message: 28/12/2011, 19h27
  3. Réponses: 2
    Dernier message: 05/02/2010, 11h33
  4. Pb avec Hibernate : impossible de persister mon entité
    Par Atatorus dans le forum GWT et Vaadin
    Réponses: 5
    Dernier message: 17/02/2009, 23h39
  5. [Plugin][Hibernate]Eclipse avec hibernate(synchronizer)
    Par mg67 dans le forum Eclipse Java
    Réponses: 7
    Dernier message: 23/06/2005, 17h19

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