2013-06-06 10 views
0

La configuration consiste en Hibernate 3. J'essaie d'exécuter la requête brute telle quelle. La configuration fonctionne bien pour d'autres requêtes simples, db insère & mises à jour.Hibernate - Requête brute execution_KEY Mots Problème dans la requête?

La requête en question est:

org.hibernate.hql.ast.QuerySyntaxException: unexpected token: (near line 1, column 29 [ 
      SELECT keyMain, value FROM (select distinct K.[key] as keyMain, 
      (SELECT value FROM com.trans.dto.Resources as L WHERE L.[key] = K.[key] 
       and L.lang_code = 'A11') as value from com.trans.dto.Resources as K) 
       as test order by keyMain ] 

Ressources est la table & a la configuration de mappage dans hibernate.cfg.xml

  1. J'étais sous une pensée "KEY" est le nom d'un de la colonne qui ne peut pas être changé. Comment puis-je échapper à des mots clés?

  2. Si ce n'est pas 1, alors les sélections multiples sont en sous-requête.

Veuillez nous aviser. Toute suggestion est d'une grande aide.

Répondre

0

De here:

You can force Hibernate to quote an identifier in the generated SQL 
by enclosing the table or column name in backticks in the mapping document. 
Hibernate will use the correct quotation style for the SQL Dialect. 
This is usually double quotes, but the SQL Server uses brackets and MySQL uses backticks. 

Alors, essayez d'échapper à votre champ avec des guillemets doubles ou entre parenthèses carrée ('[key]).

+0

Merci Alex. Mais j'ai essayé les options suivantes [Key], [Key], "[key]", "key" rien n'a fonctionné. Il semble fou mais a essayé tout cela. Impossible de modifier le nom de la colonne en raison de l'effet d'entraînement des modifications de code dans d'autres applications. –