2011-08-01 16 views
5

i NamedQuery kullanarak listesini almak çalıştığınızda bu durum var:org.hibernate.exception.SQLGrammarException: sorguyu çalıştıramadı mı?

Varlık Sınıfı Kodu:

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

DAO ben kod sözü Aşağıda

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

uygulamak kodu:
Bu istisna için lütfen çözüm önerisi gönderin.

+0

Sadece "TblUsers t" denediniz mi? Bu doğru HQL sözdizimi. – Olaf

+0

@Olaf - "TblUsers t'den t seçin" doğru HQL de – ChssPly76

+0

Tüm yığın izlemesini göstermeniz gerekir. SQLGrammarException, SQL (Hibernate tarafından çevrildiği şekliyle) veritabanınız tarafından kabul edilmediğini gösterir. Tablonun var olduğundan emin olun (uygun şemada). – ChssPly76

cevap

3

Hazırda Bekletme'nin oluşturduğu SQL sorgusunu (hibernate.show_sql veya tercihen Hibernate'in SQL logging kullanarak) alın ve veritabanına karşı kendi başına çalıştırın. Bu büyük olasılıkla sizi doğru yönde yönlendirmeye yardımcı olacaktır.

+3

hibernate.show_sql kullanarak denedim ama tüm aldım tabloya (sütun) değerleri eklemek (?) 'Gerçekte sadece bir demet değil? – cbmeeks

7

Bir süredir aynı sorunla karşı karşıya kaldı ve sorunun, Tablo adının veritabanındaki sınıf (veya Varlık) adından farklı olmasından kaynaklandığını anladı. @Table (name = actual_table_name) notu eklendi ve işe yaradı.