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 :

recuperer le resultat


Sujet :

Hibernate Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Inscrit en
    Novembre 2006
    Messages
    67
    Détails du profil
    Informations forums :
    Inscription : Novembre 2006
    Messages : 67
    Par défaut recuperer le resultat
    bonjour tout le monde
    j'ai un probleme
    je ne sais pas trop comment m'y prendre
    alors voila j'ai une requete comme si
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    Select prestation.montantFraisReel as mntFRL,prestation.montantFraisExclus as mntFE,prestation.tauxRembourse as tr,sum(prestation.montantFraisReel)as totalmntFRL,sum(prestation.montantFraisExclus)as totalmntFE,ntFraisExclus)as totalmntFR,sum((prestation.montantFraisReel - 2* prestation.montantFraisExclus)*(100-prestation.tauxRembourse)/100) as totalmntTM,sum((prestation.montantFraisReel - 2* prestation.montantFraisExclus)*(100-prestation.tauxRembourse)/100 +2* prestation.montantFraisExclus)as totalmntQP  from Adherent as adherent, FeuilleMaladie as feuilleMaladie, Prestation as prestation,SousGarantie as sousGarantie, Zone as zone, Affilie as affilie WHERE adherent.numeroPolice=feuilleMaladie.numeroPolice AND adherent.numeroAdherent=feuilleMaladie. numeroAdherent  AND feuilleMaladie.numeroPolice=affilie.numeroPolice AND feuilleMaladie.numeroAdherent=affilie.numeroAdherent AND feuilleMaladie.numeroAffilie=affilie.numeroAffilie AND prestation.numeroFeuille=feuilleMaladie.numeroFeuille AND prestation.codeSousGarantie=sousGarantie.codeSousGarantie AND prestation.codeZone=zone.codeZone AND affilie.numeroPolice=adherent.numeroPolice AND affilie.numeroAdherent=adherent.numeroAdherent AND feuilleMaladie.numeroPolice='valeur' 
    AND feuilleMaladie.numeroAdherent=valeur
    et qd je la teste directement sur mon sql server j'ai des resultats

    alors j'ecrie une methode dans mon dao
    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
     
    public ArrayList getTotal(String numeroPolice,Integer numeroAdherent) {
    	    logger.info("Entree dans la  methode getIdMaxDeclarationUser la classe TotalDao");
    	    Session session = this.getSessionFactory().openSession();
    	    List list =new ArrayList();
    	    try{
    	        Transaction tx = session.beginTransaction();
    	        list = session.createQuery("Select prestation.montantFraisReel as mntFRL,prestation.montantFraisExclus as mntFE,prestation.tauxRembourse as tr,sum(prestation.montantFraisReel)as totalmntFRL,sum(prestation.montantFraisExclus)as totalmntFE,ntFraisExclus)as totalmntFR,sum((prestation.montantFraisReel - 2* prestation.montantFraisExclus)*(100-prestation.tauxRembourse)/100) as totalmntTM,sum((prestation.montantFraisReel - 2* prestation.montantFraisExclus)*(100-prestation.tauxRembourse)/100 +2* prestation.montantFraisExclus)as totalmntQP  from Adherent as adherent, FeuilleMaladie as feuilleMaladie, Prestation as prestation,SousGarantie as sousGarantie, Zone as zone, Affilie as affilie WHERE adherent.numeroPolice=feuilleMaladie.numeroPolice AND adherent.numeroAdherent=feuilleMaladie. numeroAdherent  AND feuilleMaladie.numeroPolice=affilie.numeroPolice AND feuilleMaladie.numeroAdherent=affilie.numeroAdherent AND feuilleMaladie.numeroAffilie=affilie.numeroAffilie AND prestation.numeroFeuille=feuilleMaladie.numeroFeuille AND prestation.codeSousGarantie=sousGarantie.codeSousGarantie AND prestation.codeZone=zone.codeZone AND affilie.numeroPolice=adherent.numeroPolice AND affilie.numeroAdherent=adherent.numeroAdherent AND feuilleMaladie.numeroPolice='"+numeroPolice+"' AND feuilleMaladie.numeroAdherent="+numeroAdherent).list(); 
     
    	        tx.commit();
    	    }catch (Exception e){
    	        e.printStackTrace();
    	        logger.error("Erreur lors de la recuperation des totaux par adherent");
    	    }finally{
    	        session.close();
    	    }
    	    return (ArrayList) list ; 
    	}
    et j'ai ecrit un bean Total.java
    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
     
    private String totalmntFRL;
    	private String totalmntFR;
    	private String totalmntFE;
    	private String totalmntTM;
    	private String totalmntQP;
    	private String libelle;
     
     
    	public Total()
    	{
    	    totalmntFRL="";
    		totalmntFR="";
    		totalmntFE="";
    		totalmntTM="";
    		totalmntQP="";
     
    	}
    	public Total(Object[] bilan){
     
    		this.totalmntFRL = (String)bilan[0];
    		this.totalmntFR = (String)bilan[1];
    		this.totalmntFE = (String)bilan[2];
    		this.totalmntTM = (String)bilan[3];
    		this.totalmntQP = (String)bilan[4];
          }
    et j'aimerai pouvoir récupérer le résultat de la méthode dao et le mettre dans le bean Total ce dont je n'arrive pas a faire

    Merci d'avance

  2. #2
    Expert éminent
    Avatar de tchize_
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2007
    Messages
    25 482
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : Belgique

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2007
    Messages : 25 482
    Par défaut
    createQuery, c'est du HQL pas du SQL. Ca prend pas des références de tables mais des objets hibernate. Tu dois donc remplacer tes noms de tables par des objets hibernate et tes colonnes par tes propriétés. Pour ce qui est de remplir un bean avec le résultat, à part à la main, je sèche

  3. #3
    Membre très actif Avatar de ZeRevo
    Inscrit en
    Avril 2007
    Messages
    302
    Détails du profil
    Informations personnelles :
    Âge : 40

    Informations forums :
    Inscription : Avril 2007
    Messages : 302
    Par défaut
    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
    public class Personne {
     
    	private Long id;
    	private String libelle;
            private Long nbDeplacement;
     
    	public Long getNbDeplacement() {
    		return nbDeplacement;
    	}
    	public void setNbDeplacement(Long nbDeplacement) {
    		this.nbDeplacement = nbDeplacement;
    	}
    	public Long getId() {
    		return id;
    	}
    	public void setId(Long id) {
    		this.id = id;
    	}
    	public String getLibelle() {
    		return libelle;
    	}
    	public void setLibelle(String libelle) {
    		this.libelle = libelle;
    	}
    Il faut pas utiliser le constructeur mais il faut passer par les accesseurs.

    Le problème avec ta requête c'est quelle mélange 2 choses : la partie récupération des données qui est affectée à la couche dao et la partie manager qui est s'occupe des régles de gestion.

    Ca se représente comme ca :
    --dao
    --manager
    --controller
    --vue

    Le mieux c'est séparer les calculs sur les données (couche manager) de la couche de récupération des données.

    Dans la partie DAO on aura donc :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    Query query = getSession().createQuery("From Personne personne WHERE personne.libelle = :libelle");
    query.setParameter("libelle", nomPersonne);
    ...
    return (Personne) query.uniqueResult();
    et dans le manager :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    Personne personne = personneDao.getPersonne("toto");
    Double fraisReel =new Double(personne.getNbDeplacement() * 5.5);
    Comme tu as du le remarquer je n'utilise pas de classes Total car elle ne represente rien au niveau de la base de données. Un pojo/table ne doivent pas contenir de champs calculé.

    Si tu veux stocker ces données dans une classe Total, il faut l'appeler TotalDTO par exemple et la mettre dans un repertoire particulier (dto). Pourquoi un répertoire particulier ? car cette classe est une classe utilitaire qui est détachée du schéma de la base de données

Discussions similaires

  1. recuperer les resultats
    Par PAYASS59 dans le forum Langage
    Réponses: 9
    Dernier message: 17/02/2006, 09h06
  2. Récupérer un résultat oracle dans une variable
    Par claralavraie dans le forum Linux
    Réponses: 4
    Dernier message: 09/01/2006, 16h59
  3. Recuperer le resultat d'une commande
    Par vbcasimir dans le forum Linux
    Réponses: 2
    Dernier message: 08/12/2005, 10h11
  4. [c#]Recuperer le resultat d'une requette SELECT @@IDENTITY
    Par MaxiMax dans le forum Windows Forms
    Réponses: 8
    Dernier message: 01/07/2005, 17h12
  5. recuperer ler resultat d une procedure stockée
    Par Nadaa dans le forum MS SQL Server
    Réponses: 4
    Dernier message: 25/08/2004, 08h45

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