2013-10-10 21 views
0

我正在使用HQL查詢,請參閱下面的代碼。查詢語法異常,表名未映射

實體類:

@Entity 
@Table(name = "COUNTRY") 
public class Country implements Serializable{ 

private long countryCode; 
private String countryName; 

DAO:

public List<Country> getCountryList(){ 
    List<Country> resultList = null; 
    System.out.println("in dao"); 
    Query query = getSession().createQuery(" from country ctry "); 
    resultList = query.list(); 


    return resultList; 
} 

應用程序的context.xml:

<beans:property name="annotatedClasses"> 
    <beans:list> 
     <beans:value>com.test.in.ergy.entity.Country</beans:value> 
    </beans:list> 
</beans:property> 

可能是什麼問題

回答

0

我改變了我的查詢從HQL到SQL和它的工作。 查詢低於..

String queryString = " select ctry.COUNTRY_CODE, ctry.COUNTRY_NAME from METRICS.COUNTRY ctry "; 

    try { 
     SQLQuery query = getSession().createSQLQuery(queryString); 
     resultList = query.list(); 
} 
0

在HQL查詢的實體是案件森sitive。

替換此:

Query query = getSession().createQuery(" from country ctry "); 

此:

除了Java類和屬性,查詢的名稱除外:

Query query = getSession().createQuery(" from Country ctry "); 

從參考手冊,章節14.1提取物 不區分大小寫。因此,SeLeCT與sELEct相同,但是org.hibernate.eg.FOO不是org.hibernate.eg.Foo,而 foo.barSet不是foo.BARSET。

http://docs.jboss.org/hibernate/orm/3.3/reference/en/html/queryhql.html

問候

+0

但我試過使用COUNTRY,存在同樣的問題。 – madhu

+0

測試國家 – esmoreno

+0

我的查詢是使用國家作爲我給的類名是國家。不知道發生了什麼事情。無法解決問題 – madhu

1

如果使用的createQuery查詢類,Hibernate是大小寫敏感的,但是對於您試圖以檢索...不是表類名

例如

Query query = session.createQuery(「from Airplane」); 將工作,如果該類的名稱是「飛機」

Query query = session.createQuery(「from AIRPLANE」); 無論數據庫中的表名是AIRPLANE,它都會失敗,因爲它會查找類,而不是表