2011-08-01 19 views
5

Tengo esta excepción al intentar obtener la lista usando NamedQuery:org.hibernate.exception.SQLGrammarException: no se pudo ejecutar la consulta?

org.hibernate.exception.SQLGrammarException: could not execute query

A continuación he mencionado código:

Código de clase Entidad:

@Table(name = "tbl_users") 
@XmlRootElement 
@NamedQueries({@NamedQuery(name = "TblUsers.findAll", query = "SELECT t FROM TblUsers t")}); 

DAO implementar Código:

org.hibernate.Query query = session.getNamedQuery("TblUsers.findAll"); 
List list = query.list(); 

Proporcione la solución para esta excepción.

+0

¿Has probado "desde TblUsers t"? Esta es la sintaxis HQL correcta. – Olaf

+0

@Olaf - "select t from TblUsers t" es correcto HQL también – ChssPly76

+0

Debe mostrar todo el seguimiento de la pila. SQLGrammarException significa que SQL (como lo tradujo Hibernate) no fue aceptado por su base de datos. Asegúrese de que la tabla exista (en el esquema apropiado). – ChssPly76

Respuesta

3

Obtenga la consulta SQL que está generando Hibernate (usando hibernate.show_sql o, preferiblemente, SQL logging de Hibernate), y ejecútelo contra la base de datos usted mismo. Eso probablemente lo ayude a guiarlo en la dirección correcta.

+3

He intentado usar hibernate.show_sql pero todo lo que obtengo es 'insert into table (column) values ​​(?)' ¿Cómo podemos ver realmente el SQL REAL y no solo un montón de marcas '?'? – cbmeeks

7

Se estaba enfrentando el mismo problema por un tiempo y descubrió que el problema se debía a que el nombre de la Tabla era diferente del nombre de la clase (o Entidad) en la base de datos. Se agregó la anotación @Table (name = actual_table_name) y funcionó.

Cuestiones relacionadas