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 :

Problème avec une requête hibernate


Sujet :

Hibernate Java

  1. #1
    Nouveau membre du Club
    Inscrit en
    Avril 2007
    Messages
    78
    Détails du profil
    Informations forums :
    Inscription : Avril 2007
    Messages : 78
    Points : 39
    Points
    39
    Par défaut Problème avec une requête hibernate
    Bonjour à tous,

    J'ai un petit problème, j' ai 2 champs à remplir pour faire une recherche (1 champs identifiant et un champs service) et j'ai plusieurs possibilité remplir un seul champs où les 2 lorsque je rempli un seul champs tout marche et lorsque je rempli les 2 ca reste bloqué sur le page!

    voici le code de mon action
    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
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
     
     
     
    		//--------------------------------------------------
    		//	Cas où les 2 champs sont renseignés
    		//--------------------------------------------------
    		if (identifiant != null && service != null)
    		{
    			Utilisateur utilisateur = remote.findUser(identifiant, service);
    			List<Utilisateur> utilisateurs  = new ArrayList<Utilisateur>();
    			if (utilisateur != null  && utilisateurs.size() == 1)
    				{
    					Logging.info("passe dans le if si les 2 champs sont remplis");
    					utilisateurs.add(utilisateur);
    					findUserForm.setUtilisateurs(utilisateurs);
    				}
     
    			else 
    			{
    				Logging.info("passe dans le else si les 2 champs sont remplis");
    				findUserForm.setError("Aucune réponse ne correspond à votre recherche.");
    			}
     
    		}
    		//--------------------------------------------------
    		//	Cas où les l'identifiant est renseigné
    		//--------------------------------------------------
    		else if (identifiant != null && service == null)
    		{
     
    			Utilisateur utilisateur = remote.findUser(identifiant);
    			if (utilisateur != null)
    			{
    				Logging.info("passe dans le if si l'identifiant est rempli");
    				List<Utilisateur> utilisateurs  = new ArrayList<Utilisateur>();
    				utilisateurs.add(utilisateur);
    				findUserForm.setUtilisateurs(utilisateurs);
    			}
    			else
    			{
    				Logging.info("passe dans le else si l'identifiant est rempli");
    				findUserForm.setUtilisateur(null);
    				findUserForm.setError("Aucune réponse ne correspond à votre recherche.");
    			}
    		}
    		//--------------------------------------------------
    		//	Cas où le champs service est renseigné
    		//--------------------------------------------------
    		else if (identifiant == null && service != null)
    		{
    			List<Utilisateur> utilisateurs = remote.findUser(service);
    			if (null != utilisateurs && utilisateurs.size() > 0) 
    			{
    				Logging.info("passe dans le if si le service est rempli");
    				findUserForm.setUtilisateurs(utilisateurs);
    			} 
    			else
    			{
    				Logging.info("passe dans le else si l est rempli");
    				findUserForm.setError("Aucune réponse ne correspond à votre recherche.");
    			}
    		}
    		//--------------------------------------------------
    		//	Cas où aucun des champs sont renseignés
    		//--------------------------------------------------
    		else if (identifiant == null && service == null)
    		{
    			List<Utilisateur> utilisateurs = remote.findUser(service);
    			if (null != utilisateurs && utilisateurs.size() > 0) 
    			{
    				findUserForm.setUtilisateurs(utilisateurs);
    			} 
    			else
    			{
    				findUserForm.setError("Aucune réponse ne correspond à votre recherche.");
    			}
    		}


    et le code mes requêtes hql
    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
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
     
     
    public Utilisateur findByLogin(String login) throws CcipHibernateException {
    		Logging.info("in UtilisateurDao.findByLogin");
    		Utilisateur result = null;
    		try {
    			Session session = getSession();
    			if (isLocal() && !session.getTransaction().isActive())
    				session.beginTransaction();
    			String hql = "select utilisateur from Utilisateur as utilisateur left join fetch utilisateur.service as service "
    					+ "left join fetch utilisateur.profil as profil left join fetch profil.restrictions as restriction where utilisateur.identifiant= :login";
    			Query query = session.createQuery(hql);
    			query.setString("login", login);
    			result = (Utilisateur) query.uniqueResult();
    		}
    		catch (HibernateException hex) {
    			hex.printStackTrace();
    			Logging.error("findByLogin impossible pour le login " + login, hex);
    			throw new CcipHibernateException("findByLogin impossible pour le login " + login);
    		}
    		return result;
    	}
    public List<Utilisateur> findByService(Service service) throws CcipHibernateException {
    		List<Utilisateur> results = null;
    		try {
    			Session session = getSession();
    			if (isLocal() && !session.getTransaction().isActive())
    				session.beginTransaction();
    			results = session.createCriteria(Utilisateur.class).add(Restrictions.eq(Utilisateur.PROP_UTL_SERVICE, service))
    					.setFetchMode("service", FetchMode.JOIN).setFetchMode("profil", FetchMode.JOIN).setResultTransformer(
    							Criteria.DISTINCT_ROOT_ENTITY).list();
    			HashSet set = new HashSet<Utilisateur>(results);
    			results = new ArrayList<Utilisateur>(set);
    		}
    		catch (HibernateException hex) {
    			Logging.error("findByService impossible pour le service " + service, hex);
    			throw new CcipHibernateException("findByService impossible pour le service " + service);
    		}
    		Logging.info("findByService, taille de la liste des résultats : " + results.size());
    		return results;
    }	
     
    	public List<Utilisateur> findAllUtilisateurByService(Utilisateur user) throws Exception {
    		Logging.info("List<Utilisateur> findAllUtilisateurByService() []:");
    		try {
    			Session session = getSession();
    			Utilisateur user1 = (Utilisateur)session.load(Utilisateur.class, user.getId());
    			Service service = user1.getService();
    			List<Utilisateur> resultat = findByService(service);
    			return resultat;
    		} catch (Exception e) {
    			e.printStackTrace();
    			throw e;
    		}
    	}
     
    //c'est celle la qui ne marche pas!
    	public Utilisateur findByLoginAndService(String login, Service service) throws CcipHibernateException {
    		List<Utilisateur> results = null;
    		try {
    			Session session = getSession();
    			if (isLocal() && !session.getTransaction().isActive())
    				session.beginTransaction();
     
    			if (login == null || login.length()==0){
    				List<Utilisateur> tmp = this.findByService(service);
    				return tmp.get(0);
    			}
    			else if (service == null || service.getId()==0){
    				Query query = session.createQuery("select distinct utilisateur from Utilisateur utilisateur  " +
    						" left join fetch utilisateur.service as service " +
    						" left join fetch utilisateur.profil as profil " +
    						" where utilisateur.identifiant=:login  " );
    				query.setString("login", login.toUpperCase());
    				List<Utilisateur> tmp = query.list();
    				return tmp.get(0);
    			}
    			else{
    				Query query = session.createQuery("select distinct utilisateur from Utilisateur utilisateur  " +
    						" left join fetch utilisateur.service as service " +
    						" left join fetch utilisateur.profil as profil " +
    						" where utilisateur.identifiant=:login  and utilisateur.service=:service " +
    						" order by utilisateur.identifiant");
    				query.setString("login", login);
    				query.setEntity("service", service);
    				return (Utilisateur)query.uniqueResult();
    			}
    		}
    		catch (HibernateException hex) {
    			Logging.error("findByLoginAndService impossible pour le login " + login + " et le service " + service, hex);
    			throw new CcipHibernateException("findByLoginAndService impossible pour le login " + login + " et le service "
    					+ service);
    		}
     
    	}

    Est ce quelqu'un a une idée, svp??

  2. #2
    Nouveau membre du Club
    Inscrit en
    Avril 2007
    Messages
    78
    Détails du profil
    Informations forums :
    Inscription : Avril 2007
    Messages : 78
    Points : 39
    Points
    39
    Par défaut
    Ben j'ai résolu mon problème toute seule en fait je ne sais pas pourquoi mais dans les paramètres de ma requêtes il passer l'identifiant en minuscule alors que dans le champs c'était en majuscule et dans mes tables c'est en majuscule aussi.
    Donc il m'a suffit de rajouter un "login.toUpperCase()" dans ma requête.

    Voilà!!!

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Problème avec une requête Hibernate
    Par pololalo dans le forum Hibernate
    Réponses: 10
    Dernier message: 22/08/2011, 23h37
  2. Probléme avec une requête (Hibernate)
    Par SI_BDD dans le forum Hibernate
    Réponses: 1
    Dernier message: 03/08/2011, 08h26
  3. Problème avec une requête
    Par ringostarr dans le forum Langage SQL
    Réponses: 5
    Dernier message: 19/04/2005, 20h34
  4. Problème avec une requête
    Par snoopy69 dans le forum Débuter
    Réponses: 2
    Dernier message: 20/01/2005, 12h39
  5. problème avec une requête imbriquée
    Par jaimepasteevy dans le forum Langage SQL
    Réponses: 13
    Dernier message: 05/12/2003, 10h29

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