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 :

Erreur "Remember that ordinal parameters are 1-based!"


Sujet :

Hibernate Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé
    Femme Profil pro
    Inscrit en
    Mai 2012
    Messages
    360
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations forums :
    Inscription : Mai 2012
    Messages : 360
    Par défaut Erreur "Remember that ordinal parameters are 1-based!"
    Bonjour,

    Je développe une application qui me permet de gérer des horaires, mais je rencontre un problème.
    En effet, lorsque je lance l'application, j'ai ce message d'erreur :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    Messages: 	
    Remember that ordinal parameters are 1-based!
     
    java.lang.IndexOutOfBoundsException: Remember that ordinal parameters are 1-based!
    Je fais passé 3 paramètres comme critère de recherche dans ma fonction :

    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
     
    public List<PersonneCompteurSemaineDisp> getCompteurByIdPersonneAndYear (String nomPersonne,String prenomPersonne, String Year){
     
    		List<PersonneCompteurSemaineDisp> listPersCompteur = new ArrayList<PersonneCompteurSemaineDisp>();
    		String queryString =
    				" SELECT personne.nom, personne.prenom, service.nomService, compteur.horaireFaite, compteur.observation, "
    				+" semaine.dateDebutSem, semaine.dateFinSem "
    				+" From Compteur as compteur, Personne as personne, Semaine as semaine, Perssemainecompt as perssemainecompt, Service as service "
    				+" Where personne.service.idService = service.idService " 
    				+" and perssemainecompt.personne.idPersonne = personne.idPersonne "
    				+" and perssemainecompt.compteur.idCompteur = compteur.idCompteur "
    				+" and perssemainecompt.semaine.idSemaine = semaine.idSemaine "
    				+" and personne.nom like '%?%' "
    				+" and personne.prenom like '%?%' "
    				+" and semaine.dateDebutSem  like '%?%' "
    				+" group by semaine.idSemaine";
     
     
    		System.out.println("queryString de getCompteurByIdPersonneAndYear "+queryString);
    		String[] params = {nomPersonne, prenomPersonne,  Year};
     
    		System.out.println("params : "+params);
     
    		Iterator results = this.getHibernateTemplate().find(queryString, params).iterator();
     
    		System.out.println("results : "+results);
    Après un certains nombre de recherche, je pense que le problème vient de cette ligne :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    Iterator results = this.getHibernateTemplate().find(queryString, params).iterator();
    Mais je ne vois pas où est le problème....

  2. #2
    Expert confirmé
    Avatar de sinok
    Profil pro
    Inscrit en
    Août 2004
    Messages
    8 765
    Détails du profil
    Informations personnelles :
    Âge : 45
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Août 2004
    Messages : 8 765
    Par défaut
    as tu essayé de mettre tes % dans les chaines passées dans les params et non dans la requête en elle même.

    Je mettrais dans la requête uniquement des


    avec des params de ce type:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    String[] params = {"%"+nomPersonne+"%", "%"+prenomPersonne+"%",  "%"+Year+"%"};
    au lieu de


    Pas sur de savoir comment le java et le SGBD vont réagir à ce genre de syntaxe batarde, vu que les ? sont déjà sensés s'occuper de la mise en place des quotes nécessaire.

  3. #3
    Membre éclairé
    Femme Profil pro
    Inscrit en
    Mai 2012
    Messages
    360
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations forums :
    Inscription : Mai 2012
    Messages : 360
    Par défaut
    Super, je n'ai plus ce message d'erreur.
    Merci beaucoup pour votre aide.

    Par contre, j'en ai un autre.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    java.lang.ClassCastException: java.lang.String cannot be cast to java.util.Date
    Effectivement dans ma base de donnée,dateDebutSem présent dans ma base de donnée est au format date. (dd/mm/yyyy)
    Or dans le paramètre que je passe, le paramètre c'est un String (ce n'est jusque que l'année)

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
        public List<PersonneCompteurSemaineDisp> getCompteurByIdPersonneAndYear (String nomPersonne,String prenomPersonne, String Year){.......
     
    String[] params = {"%"+nomPersonne+"%", "%"+prenomPersonne+"%",  "%"+Year+"%"};
    Comment puis-je faire passer ce paramètre au bon format pour ne pas avoir de message d'erreur ?
    Merci encore pour votre aide.

  4. #4
    Expert confirmé
    Avatar de sinok
    Profil pro
    Inscrit en
    Août 2004
    Messages
    8 765
    Détails du profil
    Informations personnelles :
    Âge : 45
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Août 2004
    Messages : 8 765
    Par défaut
    Pour faire simple, au niveau des date, ce n'est pas un like qu'il faut utiliser. Les like ne fonctionnent pas pour le type date.

    Il faut utiliser l'opérateur between combine avec des objets de type java.util.Date

  5. #5
    Membre Expert
    Homme Profil pro
    Directeur technique
    Inscrit en
    Janvier 2007
    Messages
    1 348
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Directeur technique

    Informations forums :
    Inscription : Janvier 2007
    Messages : 1 348
    Par défaut
    Je te conseille de regarder la classe SimpleDateFormat

  6. #6
    Membre éclairé
    Femme Profil pro
    Inscrit en
    Mai 2012
    Messages
    360
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations forums :
    Inscription : Mai 2012
    Messages : 360
    Par défaut
    Merci beaucoup pour vos réponses.

    Le soucis persiste. Sauriez vous par hasard comment transformer une string en une date, sachant que la String ne correspond qu'à l'année....

    Ah je viens juste de voir que l'on m'a donné une piste de réflexion ^^

    Bon je re-édite mon message

    J'ai désormais ce message d'erreur et je ne comprend pas pourquoi ...
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    java.lang.ClassCastException: java.util.Date cannot be cast to java.sql.Date
    Merci de votre aide

  7. #7
    Expert confirmé
    Avatar de sinok
    Profil pro
    Inscrit en
    Août 2004
    Messages
    8 765
    Détails du profil
    Informations personnelles :
    Âge : 45
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Août 2004
    Messages : 8 765
    Par défaut
    dans ton cas il faut faire un truc du genre

    Code SQL : Sélectionner tout - Visualiser dans une fenêtre à part
    and semaine.dateDebutSem  between ? and ?

    A alimenter avec des dates crées via un Calendar.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    Calendar c = Calendar.getInstance();
    //Premier jour de l'année
    c.set(Integer.paserInt(Year),0,1);
    Date startDate = c.getTime();
    //dernier jour de l'année
    c.set(Calendar.DAY_OF_YEAR,c.getActualMaximum(Caledar.DAY_OF_YEAR));
    Date endDate = c.getTime();
     
    //Creation des params
    Object[] params = {"%"+nomPersonne+"%", "%"+prenomPersonne+"%",  startDate, endDate};

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

Discussions similaires

  1. [2.x] Some mandatory parameters are missing
    Par newborns dans le forum Symfony
    Réponses: 5
    Dernier message: 24/03/2014, 21h08
  2. [PDO] Erreur execute(): SQLSTATE[HY093]: Invalid parameter number: number of bound variables
    Par Aaymeric91 dans le forum PHP & Base de données
    Réponses: 10
    Dernier message: 30/09/2013, 17h27
  3. [Data] Remember that ordinal parameters are 1-based!
    Par TomDush dans le forum Spring
    Réponses: 0
    Dernier message: 05/03/2010, 15h06
  4. Erreur expects at most 1 parameter, 2 given
    Par dubitoph dans le forum Langage
    Réponses: 2
    Dernier message: 18/07/2009, 18h23
  5. Treeview : Erreur "Reference to variable or parameter..
    Par Tirlibibi dans le forum XMLRAD
    Réponses: 4
    Dernier message: 06/05/2003, 11h19

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