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??