7
votes

org.hibernate.exception.sqlgammareXception: Impossible d'exécuter la requête?

J'ai reçu cette exception lorsque j'essaie d'obtenir la liste à l'aide de NamedQuery:

org.hibernate.exception.sqlgammareXception: Impossible d'exécuter la requête

ci-dessous j'ai mentionné le code mentionné ci-dessous :

Entity Code de classe d'entité: xxx

DAO Implément code: xxx

veuillez fournir une solution à cette exception.


3 commentaires

Avez-vous essayé juste "des Tblusers t"? C'est la syntaxe HQL correcte.


@Oolaf - "Sélectionnez T de Tblusers T" est aussi correct HQL


Vous devez montrer toute la trace de la pile. SQLGRAMMAREXCEPTION signifie SQL (comme traduit par Hibernate) n'a pas été accepté par votre base de données. Assurez-vous que la table existe (dans le schéma approprié).


5 Réponses :


5
votes

Obtenez la requête SQL que Hibernate génère (en utilisant hibernate.show_sql ou, de préférence, SQL Logging ) et l'exécuter contre la base de données vous-même. Cela vous aidera probablement à vous diriger dans la bonne direction.


1 commentaires

J'ai essayé d'utiliser hibernate.show_sql mais tout ce que je reçois est insérer dans les valeurs de table (colonne) (?) Comment pouvons-nous réellement voir le vrai SQL et non seulement un groupe de ? marques?



10
votes

était confronté au même problème pendant un certain temps et a compris que le problème était dû au nom de la table étant différent du nom de la classe (ou de l'entité) de la base de données. Ajout de l'annotation @TAble (nom = rétical_tabl_name) et fonctionnait.


0 commentaires

0
votes

On dirait que cette question est peu ancienne mais une fois de toute façon une fois que j'ai ajouté ci-dessous la ligne d'hibernation de fichiers de configuration, il a fonctionné pour moi.

<property name="show_sql">true</property>


0 commentaires

1
votes

Essayez celui-ci, cela pourrait fonctionner. Il a parfaitement travaillé pour moi.

1) Annotation de niveau de classe. P>

Query qry2 = sf.getCurrentSession().getNamedQuery("USER_DETAILS.byName")    ;
        qry2.setString(0, "Angad Bansode");
        List<UserDetails> user = qry2.list();
        for (UserDetails userDetails : user) {
            System.out.println("User Details by named native query  name = " + userDetails.getUserName() + ", aadhaar no  = " + userDetails.getAadharNo());
        }


0 commentaires

0
votes

Pour moi, il manquait l'accès à la séquence de la clé primaire d'incrémentation automatique. Après avoir ajouté que cette erreur a été résolue.

GRANT USAGE, SELECT ON ALL
    SEQUENCES IN SCHEMA public
    TO "${user-name}";;


0 commentaires