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 :
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
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; }
bref, apparement hibernate n'arrives pas a faire le mapping entre les resultats et mes objets...
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)
si par contre je met le code suivant (en mettant ma requete a la main donc) :
plus d'erreur!
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; }
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 :
l'erreur retournée:
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()); }
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.
Partager