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

JPA Java Discussion :

pb createQuery avec une clé en Integer


Sujet :

JPA Java

  1. #1
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Avril 2005
    Messages
    43
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2005
    Messages : 43
    Points : 28
    Points
    28
    Par défaut pb createQuery avec une clé en Integer
    Bonjour,

    J'ai un problème avec ma persistance JPA (sous TopLink serveur Sun Server Plateform 9) :

    Je n'arrive pas à réaliser une requête simple avec mon entity manager. Je fais :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    String queryString = "SELECT tech FROM Technologie tech" 
                        + " WHERE tech.id_cat = :categorie";
                Query query = em.createQuery(queryString);
                query.setParameter("categorie", idCat.toString());
                List rs = query.getResultList();
    Ici, idCat est un paramètre de ma fonction de type Integer et dans mon entity bean Categorie, j'ai :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    @Id
    @GeneratedValue(strategy=GenerationType.SEQUENCE)
    @Column(name = "id_cat", nullable = false)
    private Integer idCat;
    J'ai pourtant l'impression que mon bean n'est pas utilisé ici avec un createQuery, ce qui semble normal, pourtant la requête n'aboutit pas...

    Merci d'avance pour votre aide parce que là je sèche...

  2. #2
    Membre habitué

    Inscrit en
    Mai 2005
    Messages
    60
    Détails du profil
    Informations forums :
    Inscription : Mai 2005
    Messages : 60
    Points : 171
    Points
    171
    Par défaut
    Est ce que tu pourrais poster l'erreur que donne ta requete ?
    Je pense que ça aiderai a comprendre ce qui cloche

  3. #3
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Avril 2005
    Messages
    43
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2005
    Messages : 43
    Points : 28
    Points
    28
    Par défaut
    Il s'agit d'une erreur générique sur JPA, je n'ai trouvé qu'un seul moyen de la contourner :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    List rs = em.createNativeQuery("SELECT * FROM Technologie WHERE id_cat = "
                        + idCat.toString() + " ORDER BY libelle").getResultList();
    Avec le createQuery normal, je ne parviens pas à passer des Integer...

  4. #4
    Expert confirmé
    Profil pro
    Inscrit en
    Août 2006
    Messages
    3 274
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2006
    Messages : 3 274
    Points : 4 141
    Points
    4 141
    Par défaut
    Si tu utilises une requête ejb ql, tu dois utiliser le nom des attributs de la classe et non pas le nom des colonnes de ta table:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    String queryString = "SELECT tech FROM Technologie tech" 
                        + " WHERE tech.idCat = :categorie";
    A tester.

  5. #5
    Expert confirmé
    Homme Profil pro
    Inscrit en
    Septembre 2006
    Messages
    2 937
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations forums :
    Inscription : Septembre 2006
    Messages : 2 937
    Points : 4 358
    Points
    4 358
    Par défaut
    Citation Envoyé par fr1man Voir le message
    Si tu utilises une requête ejb ql, tu dois utiliser le nom des attributs de la classe et non pas le nom des colonnes de ta table:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    String queryString = "SELECT tech FROM Technologie tech" 
                        + " WHERE tech.idCat = :categorie";
    A tester.
    non seulement le nom de l'attribut du POJO mais aussi son type... donc convertir avec le toString() dans le setParameter génèrera aussi une erreur...

  6. #6
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Avril 2005
    Messages
    43
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2005
    Messages : 43
    Points : 28
    Points
    28
    Par défaut
    Merci beaucoup pour vos réponses, cela fonctionne très bien en faisant :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    String queryString = "SELECT tech FROM Technologie tech" 
                        + " WHERE tech.idCat = :categorie";
                Query query = em.createQuery(queryString);
                query.setParameter("categorie", idCat);
                List rs = query.getResultList();
    Problème résolu !!!

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

Discussions similaires

  1. [AC-2002] Probleme avec l acces a une variable Long Integer
    Par sanaline dans le forum VBA Access
    Réponses: 1
    Dernier message: 13/03/2013, 16h42
  2. [VBA-E] avec une fonction value
    Par laas dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 28/11/2002, 13h22
  3. Comparaison d'un registre 8 bits avec une variable 32 bits
    Par tupperware dans le forum x86 32-bits / 64-bits
    Réponses: 3
    Dernier message: 15/10/2002, 10h25
  4. Désigner une variable avec une variable?
    Par littleman dans le forum Paradox
    Réponses: 4
    Dernier message: 12/08/2002, 11h21
  5. enregistrer dans un fichier avec une appli mdi
    Par ferrari dans le forum C++Builder
    Réponses: 4
    Dernier message: 05/05/2002, 15h17

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