2011-08-01 94 views
5

我得到这个例外,当我尝试使用NamedQuery以获取列表:org.hibernate.exception.SQLGrammarException:无法执行查询?

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

下面我提到的代码:

实体类代码:

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

DAO实施代码:

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

请为此例外提供解决方案。

+0

您是否尝试过“从TblUsers t”?这是正确的HQL语法。 – Olaf

+0

@Olaf - “从TblUsers t中选择t”也是正确的HQL – ChssPly76

+0

您需要显示整个堆栈跟踪。 SQLGrammarException意味着SQL(由Hibernate翻译)不被数据库接受。确保表格存在(以适当的模式)。 – ChssPly76

回答

3

获取Hibernate正在生成的SQL查询(使用hibernate.show_sql或者最好是Hibernate的SQL logging),并自己对数据库执行它。这很可能有助于引导你朝正确的方向发展。

+3

我试过使用hibernate.show_sql,但我得到的是'insert into table(column)values(?)'我们怎样才能真正看到REAL SQL,而不是一堆'?'标记? – cbmeeks

7

面对同样的问题一段时间,并发现问题是由于表名不同于数据库中的类(或实体)名称。添加了@Table(name = actual_table_name)注释,它工作。

相关问题