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 :

[Hibernate] QueryException sur avec un true_false type


Sujet :

Hibernate Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Septembre 2003
    Messages
    115
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : Belgique

    Informations forums :
    Inscription : Septembre 2003
    Messages : 115
    Par défaut [Hibernate] QueryException sur avec un true_false type
    Hello everybody,

    j'ai un petit soucis avec l'application intranet de la société où je travaille.
    Je sui actuellement entrain de corriger certains bugs de l'application et notemment je dois ajouter une petite fonctionnalite à celle-ci.

    C'est dans notre couche DAO que l'on crée notre requête HQL. Une requête HQL qui joue avec les type Hibernate true_false qui permette de mapper un boolean en un char(1) en sql.

    Pourtant quand j'execute la requete il me sort une
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    QueryException: could not resolve property type: isFreelance
    isFreelance étant la propriété de mon bean java.


    voici le bout de code de ma création de requête

    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
    StringBuffer query = new StringBuffer();
    
    // Début de la query
    query.append("from Employee as e ");
    StringBuffer where = new StringBuffer();
    
    ArrayList params = new ArrayList();
    ArrayList types = new ArrayList();
    
    // Début de la query
    query.append("from Employee as e ");
    
    // FirstName
    if (empl.getFirstName() != null && !"".equals(empl.getFirstName())) {
                   where.append(" e.firstName like ?");
    		params.add("%" + empl.getFirstName() + "%");
    		types.add(Hibernate.STRING);
    }
    
    // LastName
    if (empl.getLastName() != null && !"".equals(empl.getLastName())) {
    		if (!"".equals(where.toString().trim())) {
    			where.append(" and ");
    		}
    		where.append(" e.lastName like ?");
    		params.add("%" + empl.getLastName() + "%");
    		types.add(Hibernate.STRING);
    }
    
    // isFreelance
    if (!where.toString().trim().equals("")) {
    	where.append(" and ");
    }
    	where.append(" e.isFreelance = ?");
    	params.add("" + empl.isFreelance());
    	types.add(Hibernate.TRUE_FALSE);
    Cela peut parraître un peu barbare mais ce n'est jamais que des vérifications de validité des champs afin de les mettre dans la requête ou pas.


    Voilà si quelqu'un a déja utilisé le true_false type et qu'il peut me faire part de son expérience je suis preneur

    Voilà,
    merci d'avance
    Omlip

  2. #2
    Membre confirmé
    Profil pro
    Inscrit en
    Mars 2006
    Messages
    163
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2006
    Messages : 163
    Par défaut
    Comment execute-tu ta requête ensuite ? Ou gère tu l'assimilation de tes arrayList ? avec ta query?

  3. #3
    Membre confirmé
    Profil pro
    Inscrit en
    Septembre 2003
    Messages
    115
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : Belgique

    Informations forums :
    Inscription : Septembre 2003
    Messages : 115
    Par défaut
    Ah oui oups sorry

    voici voici
    ceci est à rajouter au bout de l'autre code

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    // end of the QUERY
    query.append(" order by last_name, first_name");
    
    
    // EXECUTE
    employees = dao.find(query.toString(), params.toArray(),
    (Type[]) types.toArray(new Type[] {}));
    la variable dao etant

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    EmployeeDAO dao = EmployeeDAO.getInstance();
    voici maintenant la méthode du find:
    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
     
     
    public List find(String query, Object[] obj, Type[] type) throws HibernateException {
            long startTime = 0;
            long endTime = 0;
            if (log.isDebugEnabled()) {
                log.debug("Starting DAO find method");
                startTime = System.currentTimeMillis();
            }
            List list = super.find(query, obj, type, getSession());
            if (log.isDebugEnabled()) {
                endTime = System.currentTimeMillis();
                log.debug("Found " + list.size() + " items in " + (endTime - startTime) / 1000 + "seconds");
            }
            return list;
        }
    waw je trouve qu'ils se sont un peu cassé la tête quand même

    PS: je crois que c'est un truc généré par Hibernate Synchronizer
    voilà voilà

  4. #4
    Membre confirmé
    Profil pro
    Inscrit en
    Mars 2006
    Messages
    163
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2006
    Messages : 163
    Par défaut
    Y a beaucoup plus simple en effet !
    Jettes un oeil aux criterias hibernate, c'est assez simple, et tu peux "appender" ta requête comme tu lfait, c'est tt pareil, mais en objet...

    http://www.hibernate.org/hib_docs/v3...#querycriteria

  5. #5
    Membre confirmé
    Profil pro
    Inscrit en
    Septembre 2003
    Messages
    115
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : Belgique

    Informations forums :
    Inscription : Septembre 2003
    Messages : 115
    Par défaut
    heu si c'est tout pareil alors j'aurai toujours mon erreur de QueryException

    paske le pepin c'est comment appender un type true_false

  6. #6
    Membre confirmé
    Profil pro
    Inscrit en
    Septembre 2003
    Messages
    115
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : Belgique

    Informations forums :
    Inscription : Septembre 2003
    Messages : 115
    Par défaut
    Voilà j'ai trouvé l'erreur
    j'avais fait ceci

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    if (!where.toString().trim().equals("")) {
    	where.append(" and ");
    }
    	where.append(" e.isFreelance = ?");
    	params.add("" + empl.isFreelance());
    	types.add(Hibernate.TRUE_FALSE);
    c'est un boolean que je dois lui donner en parametre pas une String


    c'etait tout bete ne fait

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

Discussions similaires

  1. Recherche sur un champ de type Date avec Hibernate
    Par federator dans le forum Hibernate
    Réponses: 0
    Dernier message: 15/05/2010, 14h37
  2. [MySQL] recherche sur la bdd avec une variable type tableau
    Par akara dans le forum PHP & Base de données
    Réponses: 2
    Dernier message: 24/03/2009, 12h11
  3. Réponses: 9
    Dernier message: 20/06/2007, 18h34
  4. [Conception] problème avec firefox sur les champs input type="file"
    Par maverick56 dans le forum EDI, CMS, Outils, Scripts et API
    Réponses: 9
    Dernier message: 11/05/2007, 11h57
  5. requete sql avec between sur des champs de type Date
    Par ersoufiane dans le forum Langage SQL
    Réponses: 2
    Dernier message: 02/08/2006, 20h43

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