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 :

erreur lors d'un select avec BD HSQL [Data]


Sujet :

Spring Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Janvier 2011
    Messages
    22
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2011
    Messages : 22
    Par défaut erreur lors d'un select avec BD HSQL
    Bonsoir,

    J'essaie d'obtenir la liste des questions d'un quizz et
    j'ai une erreur de ce type lorsque je lance via la methode ci dessous :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    	@SuppressWarnings("unchecked")
    	// obtenir la liste des questions d'un quizz
    	public List<Question> getAllQuestion(int idQuizz) {
    		return em.createQuery("select q from Question q join q.quizz qq where qq.quizz.idQuizz := ind")
    				.setParameter("ind", idQuizz).getResultList();
    	}
    le message d'erreur suivant apparait, mais je ne le comprends.
    Est-ce ma requête qui n'est pas correcte?

    L'exception suivante s'est produite : org.hibernate.hql.ast.QuerySyntaxException: unexpected token: : near line 1, column 72 [select q from metier.Question q join q.quizz qq where qq.quizz.idQuizz := ind]

  2. #2
    Membre averti
    Profil pro
    Inscrit en
    Janvier 2011
    Messages
    22
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2011
    Messages : 22
    Par défaut
    J'ai modifier ma requête qui me semble plus correcte, mais ça ne marche pas encore

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    // obtenir la liste des questions d'un quizz
    	public List<Question> getAllQuestion(int idQuizz) {
    		return em.createQuery("select q from Question q where q.idQuizz = : ind")
    				.setParameter("ind", idQuizz).getResultList();
    	}

    message d'erreur :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    L'exception suivante s'est produite : org.hibernate.QueryException: could not resolve property: idQuizz of: metier.Question [select q from metier.Question q where q.idQuizz = : ind]

  3. #3
    Invité
    Invité(e)
    Par défaut
    normalement si ta table est Question vous devez enlever le q apres Qestion et ça marchera.

    return em.createQuery("select q from Question where idQuizz = : ind")
    .setParameter("ind", idQuizz).getResultList();

  4. #4
    Membre Expert
    Homme Profil pro
    Inscrit en
    Septembre 2006
    Messages
    2 963
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations forums :
    Inscription : Septembre 2006
    Messages : 2 963
    Par défaut
    Votre query mélange le SQL et le HQL :

    si vous voulez faire un query natif, utilisez em.createNativeQuery;
    si vous voulez faire un query HQL, ne référencez pas les champs FK avec le nom de la colonne en SQL mais bien avec le nom du champ en Java et donc le paramètre de la fonction ne sera pas un "PK_type idQuizz" mais un "Quizz inQuizz".

  5. #5
    Membre averti
    Profil pro
    Inscrit en
    Janvier 2011
    Messages
    22
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2011
    Messages : 22
    Par défaut
    Si j'ai bien compris ça sera alors :

    return em.createQuery("select q from Question q join q.quizz where Quizz.idQuizz = : ind")?

  6. #6
    Membre Expert
    Homme Profil pro
    Inscrit en
    Septembre 2006
    Messages
    2 963
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations forums :
    Inscription : Septembre 2006
    Messages : 2 963
    Par défaut
    Citation Envoyé par buxan Voir le message
    Si j'ai bien compris ça sera alors :

    return em.createQuery("select q from Question q join q.quizz where Quizz.idQuizz = : ind")?
    Non.
    Vous n'avez rien rien compris, c'est toujours un mélange SQL/HQL erroné.

    donc soit du SQL :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    em.createNativeQuery("select * from Question where idQuizz = :ind")
    soit du HQL, …

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    public List<Question> getAllQuestion(Quizz inQuizz) 
    {
    return em.createQuery("from Question q where q.ownerQuizz = :quizz").setParameter("quizz", inQuizz).getResultList();
    }
    (pour peu que le champ @ManyToOne exprimant la relation Question -> Quizz s'appelle "q.ownerQuizz" dans la class Question, adaptez à la définition de votre classe Question)

  7. #7
    Membre averti
    Profil pro
    Inscrit en
    Janvier 2011
    Messages
    22
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2011
    Messages : 22
    Par défaut
    Merci jeitEmgie

    j'ai nommé la relation idQuizz :

    @ManyToOne(fetch=FetchType.LAZY)
    @JoinColumn(name = "idQuizz", nullable = false)
    private Quizz quizz;
    donc je devrais faire :
    public List<Question> getAllQuestion(Quizz inQuizz)
    {
    return em.createQuery("select q from Question q where q.idQuizz = :quizz").setParameter("quizz", inQuizz).getResultList();
    }

    mais moi je passe en paramètre un int, donc la commande devrait etre ??? :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    public List<Question> getAllQuestion(int id) 
    {
    return em.createQuery("select q from Question q where q.idQuizz = :quizz").setParameter("quizz", id).getResultList();
    }
    Aussi je pensais que c'etait du JPQL que j'etais en train de faire, à moins que je n'ai encore rien compris

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

Discussions similaires

  1. Erreur lors de la selection avec DBLookupComboBox
    Par teZone dans le forum Débuter
    Réponses: 3
    Dernier message: 15/06/2009, 12h20
  2. Erreur lors de la compilation avec OmniORB
    Par JohnKwada dans le forum CORBA
    Réponses: 1
    Dernier message: 07/09/2006, 17h34
  3. [KNOPPIX] Erreur lors de l'installation avec kaella
    Par fizz56 dans le forum Autres
    Réponses: 8
    Dernier message: 09/06/2006, 10h46
  4. [ASP][SQL]Erreur lors d'un select
    Par DEC dans le forum ASP
    Réponses: 12
    Dernier message: 08/06/2004, 17h54
  5. Réponses: 6
    Dernier message: 08/06/2004, 14h51

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