Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
2543 connectés 

  FORUM HardWare.fr
  Programmation
  Java

  Recherche d un enregistrement en utilisant Hibernate et Struts

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

Recherche d un enregistrement en utilisant Hibernate et Struts

n°1985011
sonia5
Posté le 16-04-2010 à 20:15:28  profilanswer
 

Bsr
Actuellement je travaille à un projet ou j'utilise Hibernate et struts au niveau de l'intégration de ces 2 framework je n ai pas des problèmes mais mon problème c est au niveau de la recherche d'un enregistrement  
et voici mon code:
 

Code :
  1. package com.struts.controleur;
  2. import java.util.Iterator;
  3. import org.hibernate.*;
  4. import com.gestion.Personne;
  5. import com.util.HibernateUtil;
  6. import javax.servlet.http.HttpServletRequest;
  7. import javax.servlet.http.HttpServletResponse;
  8. import org.apache.struts.action.Action;
  9. import org.apache.struts.action.ActionForm;
  10. import org.apache.struts.action.ActionForward;
  11. import org.apache.struts.action.ActionMapping;
  12. import com.struts.data.PersonneForm;
  13. public final class RecherchePersonnAction extends Action {
  14. public ActionForward execute(ActionMapping mapping, ActionForm form,
  15.                                HttpServletRequest req,
  16.                                HttpServletResponse res) throws Exception {
  17.  String resultat = null;
  18.  int id = ((PersonneForm) form).getId();
  19.  String nomPersonne = ((PersonneForm) form).getNom();
  20.  String prenomPersonne = ((PersonneForm) form).getPrenom();
  21.  try{
  22.    Session session = HibernateUtil.getSessionFactory().getCurrentSession();
  23.    session.beginTransaction();
  24.    Personne p1 = new Personne();
  25.    p1.setId(id);
  26.    p1.setNom(nomPersonne);
  27.    p1.setPrenom(prenomPersonne);
  28. //ici je recherche en utilisant requête  
  29.    String query = "select p.Id, p.Nom , p.Prenom from gestion.personne p where p.Id ="+id;
  30. Iterator results = session.createSQLQuery(query).list().iterator();
  31.    while(results.hasNext())
  32.    {
  33.     Object[] row = (Object[]) results.next();
  34.     Integer id1 = (Integer) row[0];
  35.     String nom1 = (String) row[1];
  36.     String prenom1 = (String) row[2];
  37.    }
  38.    session.getTransaction().commit();
  39.    HibernateUtil.getSessionFactory().close();
  40. //pour aller vers la page d affichage des infos recherché  
  41.    resultat = "succes";
  42.  }catch(Exception ex){
  43.   HibernateUtil.getSessionFactory().close();
  44.   resultat = "echec";
  45.  }
  46.  return mapping.findForward(resultat);
  47. }
  48. }


 
 
Mais quand je ne reçois rien à ma page d'affichage des informations  
Pourriez vous m aider
?
Merci d'avance

mood
Publicité
Posté le 16-04-2010 à 20:15:28  profilanswer
 

n°1985026
Flaie
No it's necessary
Posté le 16-04-2010 à 22:23:32  profilanswer
 

Tu crées un nouvel Objet Personne p1 que tu remplis mais tu n'en fais rien, pourquoi ?
Dans le parcours de ton iterator tu récupères le résultat mais tu n'en fais rien non plus ?
Finalement tu appelles findForward selon que c'est un succes/echec mais quand lui transmet-tu l'objet Personne à afficher ? Que fais ta page une fois redirigé ?
 
Quelques remarques sinon, puisque tu recherches un objet via son Id dans la table, tu peux utiliser session.createQuery("..." ).first() et vérifier si il est nul ou non. De même si tu as mappé ton objet dans la conf d'hibernate tu n'as pas besoin de charger id, nom, prenom, tu peux charger directement l'objet, à moins que le nombre de colonnes soit trop grand et que tu ne veuilles effectivement que ces 3 là, mais pour l'instant tu n'en fais rien.
Tu devrais regarder dans la doc d'hibernate ou voir via spring pour gérer le côté transactionnel de tes requêtes ainsi que la gestion des sessions hibernate.
 

Code :
  1. package com.struts.controleur;
  2. public final class RecherchePersonnAction extends Action {
  3.     public ActionForward execute(ActionMapping mapping, ActionForm form,
  4.                                  HttpServletRequest req, HttpServletResponse res) throws Exception {
  5.         String resultat = null;
  6.         PersonneForm pForm = (PersonneForm)form;
  7.         Session session = factory.openSession();
  8.         Transaction tx;
  9.         try {
  10.             tx = session.beginTransaction();
  11.             String query = "select p from gestion.personne p where p.Id = " + pForm.getId();
  12.             Personne pFound = (Personne)session.createQuery(query).first();
  13.             if (pFound != null) { // on a trouvé l'objet, que veux-tu en faire ?
  14.                 System.out.println("Objet Personne(id=" + pForm.getId() + ", " + pFound + " ) trouvé!" );
  15.                 resultat = "succes";
  16.             } else {
  17.                 System.out.println("Objet Personne(id=" + pForm.getId() + " ) non trouvé!" );
  18.                 resultat = "introuvable";
  19.             }
  20.             tx.commit();
  21.         } catch (Exception e) {
  22.             if (tx != null) tx.rollback();
  23.             e.printStackTrace();
  24.             resultat = "echec";
  25.         } finally {
  26.             session.close();
  27.         }
  28.         return mapping.findForward(resultat);
  29.     }
  30. }


 
As-tu activé le mode sql debug pour hibernate afin de vérifier les requêtes effectuées ?


---------------
Always wear a camera!
n°1985459
sonia5
Posté le 19-04-2010 à 14:03:59  profilanswer
 

Bonjour
Merci pour votre réponse
Je pense que la 1 ère méthode que j ai fait pour rechercher ce n est pas bon tel que actuellement j ai fait un nouveau méthode en utilisant Criteria  
Et voici mon code

Code :
  1. package com.struts.controleur;
  2. import java.util.Iterator;
  3. import org.hibernate.*;
  4. import org.hibernate.criterion.Restrictions;
  5. import antlr.collections.List;
  6. import com.gestion.Personne;
  7. import com.util.HibernateUtil;
  8. import javax.servlet.http.HttpServletRequest;
  9. import javax.servlet.http.HttpServletResponse;
  10. import org.apache.struts.action.Action;
  11. import org.apache.struts.action.ActionForm;
  12. import org.apache.struts.action.ActionForward;
  13. import org.apache.struts.action.ActionMapping;
  14. import com.struts.data.PersonneForm;
  15. public final class RecherchePersonnAction extends Action {
  16. public ActionForward execute(ActionMapping mapping, ActionForm form,
  17.                                HttpServletRequest req,
  18.                                HttpServletResponse res) throws Exception {
  19.  String resultat = null;
  20.  int id = ((PersonneForm) form).getId();
  21.  String nomPersonne = ((PersonneForm) form).getNom();
  22.  String prenomPersonne = ((PersonneForm) form).getPrenom();
  23.  try{
  24.    Session session = HibernateUtil.getSessionFactory().getCurrentSession();
  25.    session.beginTransaction();
  26.         Criteria criteria =  session.createCriteria(Personne.class);
  27.        criteria.add(Restrictions.like("id",id));
  28.         java.util.List<String> results1 = criteria.list();
  29.         Iterator<String> results =  ((java.util.List) results1).iterator();
  30.         String s;
  31.         while(results.hasNext())
  32.    {
  33.      s = results.next();
  34.    }
  35.    session.getTransaction().commit();
  36.    HibernateUtil.getSessionFactory().close();
  37.    resultat = "succes";
  38.  }catch(Exception ex){
  39.   HibernateUtil.getSessionFactory().close();
  40.   resultat = "echec";
  41.  }
  42.  return mapping.findForward(resultat);
  43. }
  44. }


 
Mon prb actuellement que n entre pas au boucle ,le traitement se bloque a la boucle
 
et voici le code de ma page succes

Code :
  1. <%@ page language="java" %>
  2. <%@ taglib uri="http://struts.apache.org/tags-bean" prefix="bean" %>
  3. <%@ taglib uri="http://struts.apache.org/tags-html" prefix="html" %>
  4. <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
  5. <html:html>
  6.   <head>
  7.     <title>Succes</title>
  8.     <html:base/>
  9.   </head>
  10.   <body bgcolor="white">
  11.     <h1> Voici le nom de la personne recherché :
  12.  <bean:write name="PersonneForm" property="nom" />
  13. </h1>
  14.    </body>
  15. </html:html>


 
Est ce que je suis en bon chemin ou bien non?
Merci d avance

n°1986445
exhortae
Membre du Cartel des Médecins
Posté le 22-04-2010 à 01:09:12  profilanswer
 

On peut avoir le fichier de mapping de ta classe Personne.


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  Java

  Recherche d un enregistrement en utilisant Hibernate et Struts

 

Sujets relatifs
Recherche un lecteur flash progressive download complet svpCréation d'un outil de visualisation et de recherche PDF
Création d'un outil de visualisation et de recherche PDFRecherche d'une fonction sous excel "=SI(A5..."
Ouverture et enregistrement d'un fichier xlsRecherche un codeur bénévole qui intégrera notre équipe s'il le ..
Suppression Fichers .mp3 liées à enregistrement sous accessRecherche de volontaires (WebDesigners, Développeurs PHP,etc...)
Recherche d'un générateur de questionnaire avec creneau/quotas/filtre 
Plus de sujets relatifs à : Recherche d un enregistrement en utilisant Hibernate et Struts


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR