2011-08-01 5 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 t"에서 시도해 보셨습니까? 이것은 올바른 HQL 구문입니다. – Olaf

+0

@Olaf - "TblUsers에서 t 선택"은 올바른 HQL입니다. – ChssPly76

+0

전체 스택 추적을 표시해야합니다. SQLGrammarException은 (Hibernate에 의해 번역 된) SQL이 데이터베이스에 채택되지 않았 음을 의미합니다. 테이블이 적절한 스키마에 있는지 확인하십시오. – ChssPly76

답변

3

하이버 네이트가 생성하고있는 SQL 쿼리 (hibernate.show_sql 또는 바람직하게는 Hibernate의 SQL logging)를 가져 와서 데이터베이스에 대해 직접 실행한다. 그것은 가장 올바른 방향으로 당신을 조종하는 데 도움이 될 것입니다.

+3

hibernate.show_sql을 사용해 보았습니다 만,'table (column) values ​​(?)'에 삽입하는 것만으로도'? '표시가 아닌 REAL SQL을 실제로 볼 수 있습니까? – cbmeeks

7

잠시 동안 동일한 문제에 직면했으며 문제가 테이블 이름이 데이터베이스의 클래스 (또는 엔티티) 이름과 다르기 때문인 것으로 나타났습니다. @Table (name = actual_table_name) 주석을 추가하여 효과적이었습니다.

관련 문제