2011-08-01 26 views
5

私はNamedQueryを使用してリストを取得しようとすると、私はこの例外を得た:org.hibernate.exception.SQLGrammarException:クエリを実行できませんでしたか?

エンティティクラスコード:

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

DAO私は、コードを述べ下

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

実装コード:

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

この例外の解決策を提供してください。

+0

「TblUsersから」だけ試しましたか?これは正しいHQL構文です。 – Olaf

+0

@Olaf - "TblUsersからtを選んでください"も正しいHQLです – ChssPly76

+0

スタックトレース全体を表示する必要があります。 SQLGrammarExceptionは、(Hibernateによって変換された)SQLがデータベースで受け入れられなかったことを意味します。テーブルが適切なスキーマに存在することを確認します。 – ChssPly76

答えて

3

Hibernateが生成しているSQLクエリを取得し(hibernate.show_sqlまたは、好ましくはHibernateのSQL loggingを使用)、データベースに対して自分自身で実行します。それが正しい方向にあなたを導く助けになるでしょう。

+3

私はhibernate.show_sqlを使ってみましたが、 'テーブル(列)の値(?)に挿入するだけです '本当に'?'マークだけでなくREAL SQLを実際に見ることができますか? – cbmeeks

7

しばらくの間、同じ問題に直面していて、テーブル名がデータベースのクラス(またはエンティティ)名と異なるために問題が発生していることがわかりました。 @Table(name = actual_table_name)アノテーションを追加しました。

関連する問題