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

Spring Java Discussion :

EmptyResultDataAccessException incorrect result size


Sujet :

Spring Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Homme Profil pro
    Analyste et Développeur Java
    Inscrit en
    Novembre 2006
    Messages
    53
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Maroc

    Informations professionnelles :
    Activité : Analyste et Développeur Java

    Informations forums :
    Inscription : Novembre 2006
    Messages : 53
    Par défaut EmptyResultDataAccessException incorrect result size
    Bonjour,

    J'utilise le JdbcDaoSupport pour interroger un objet (employe) avec un attribut Login sous forme une adresse e-mail.
    J'utilise la méthode queryForObject ...

    Cela fonctionne bien quand je fixe l'adresse e-mail du login statiquement dans le code, le résulat peut être trouvé dans la base de données.

    Si je fais mon code normal, aucun emplyeur avec l'adresse e-mail spécifiée peut être trouvé, donc je reçois l'exception suivante.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    INFOS: Server startup in 3811 ms
    2016-06-17 09:30:57 [http-apr-8080-exec-3] DEBUG c.o.s.controleur.HomePageController -  showUser() login: test_login@gmail
    2016-06-17 09:31:00 [http-apr-8080-exec-3] ERROR c.o.s.dao.JdbcEmployeDaoSupport -  getEmployeByLogin , login = test_login@gmail
    2016-06-17 09:32:11 [http-apr-8080-exec-3] DEBUG c.o.s.controleur.HomePageController -  handleEmptyData()
    2016-06-17 09:32:11 [http-apr-8080-exec-3] ERROR c.o.s.controleur.HomePageController - Request: http://localhost:8080/Demo.spring3.mvc.jdbc/emplshowlogin/test_login@gmail.com, error 
    org.springframework.dao.EmptyResultDataAccessException: Incorrect result size: expected 1, actual 0
    	at org.springframework.dao.support.DataAccessUtils.requiredSingleResult(DataAccessUtils.java:71) ~[spring-tx-3.2.2.RELEASE.jar:3.2.2.RELEASE]
    	at org.springframework.jdbc.core.JdbcTemplate.queryForObject(JdbcTemplate.java:732) ~[spring-jdbc-3.2.2.RELEASE.jar:3.2.2.RELEASE]
    vous remarquez que la méthode retourne l'adresse email sans ".com".


    sachant que mon code est comme suivant :

    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
    	// show employe by login
    	@RequestMapping(value = "/emplshowlogin/{login}", method = RequestMethod.GET)
    	public String showUserbylogin(@PathVariable("login") String login, Model model) {
     
    			logger.debug(" showUser() login: {}", login);
     
    			Employe empl = employeManager.getEmploye(login);   
     
    			if (empl == null) {
     
    				model.addAttribute("msg", "employe not found");
    			}
     
    			model.addAttribute("empl", empl);
     
    			return "show";
     
         	}
    et coté 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
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    	public Employe getEmployeByLogin(String login) {
    		// TODO recuperation d'un employe en fonction de son login
     
    		RowMapper mapper = null;
     
    		logger.error(" getEmployeByLogin , login = {}", login);
     
    		String sql = "select * from employe where login = ?";
     
    		//String sql = "select * from employe where login = 'test@gmail.com' and nom = ? ";  // Ca Marche bien
     
    	    try {		
    		// Mapping d'un enregistrement vers un ResultSet
    		    mapper = new RowMapper() {		    	
    				public Object mapRow(ResultSet rs, int rowNum) throws SQLException {
     
    				Employe empl = new Employe();
    				empl.setId(rs.getInt("id"));				
    				empl.setLogin(rs.getString("login"));
    				//empl.setPassword(rs.getString("password"));
    				empl.setNom(rs.getString("nom"));
    				empl.setPrenom(rs.getString("prenom"));
    				empl.setEmail(rs.getString("email"));
     
     
    			    return empl;
     
    				} };
     
    	    } catch (EmptyResultDataAccessException e) {
    		     // do nothing, return null
    	            }
     
     
    	      return (Employe) getJdbcTemplate().queryForObject( sql , new Object[] { login }, mapper);	
     
    	}
    Maintenant, il estime que ce n'est pas la bonne approche, il doit y avoir un moyen plus propre pour gérer URL contenant comme param une valeur sous forme d'un email.

    Je n'aime pas l'exception des captures et retourne la méthode null.

    Y at-il une autre façon de gérer ce genre de situation?

    Merci d'avance.

    Cordialement
    Mohamed EL BAB

  2. #2
    Membre confirmé
    Homme Profil pro
    Analyste et Développeur Java
    Inscrit en
    Novembre 2006
    Messages
    53
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Maroc

    Informations professionnelles :
    Activité : Analyste et Développeur Java

    Informations forums :
    Inscription : Novembre 2006
    Messages : 53
    Par défaut
    Bonjour,

    Ok C'est bon j'ai trouvé la solution il faut ajouter le :.+ avec le login qui est passé en paramètre dans l'appel en contrôleur.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
            // show employe by login
    	@RequestMapping(value = "/emplshowlogin/{login:.+}", method = RequestMethod.GET)
    	public String showUserbylogin(@PathVariable("login") String login, Model model) {   ....    	}
    il faut faire comme ça rien de plus {login:.+}

    Cordialement

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

Discussions similaires

  1. [wavread] Incorrect chunk size information
    Par socrate88 dans le forum MATLAB
    Réponses: 1
    Dernier message: 06/09/2010, 11h52
  2. Erreur VB 6 La propriété Size dans Font a une valeur incorrecte
    Par lucres84 dans le forum VB 6 et antérieur
    Réponses: 1
    Dernier message: 08/01/2010, 01h23
  3. Process 5843 exited with non zero value (63): results may be incorrect
    Par K2000 dans le forum x86 32-bits / 64-bits
    Réponses: 1
    Dernier message: 28/04/2009, 11h32
  4. Erreur "size array"
    Par boobob dans le forum C
    Réponses: 3
    Dernier message: 06/08/2003, 10h18
  5. [VB6] [MSChart] Courbe incorrecte
    Par elifqaoui dans le forum VB 6 et antérieur
    Réponses: 18
    Dernier message: 08/10/2002, 21h53

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