2011-08-01 91 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)註釋,它工作。

相關問題