2014-01-29 66 views
0

我正在將一些應用程序邏輯從JDBC遷移到Hibernate。使用JDBC有許多簡單的插入,更新和選擇語句,我正在嘗試爲此使用HQL。我需要聲明一個使用HQL的類嗎?

舉例來說,使用JDBC,以下是查詢

select * from tab where property =<given value> 

我使用的HQL這樣

session.createQuery(query).setString("property", "some prop value"); 

當我運行的代碼,我不斷收到錯誤說

「org.hibernate.hql.internal.ast.QuerySyntaxException:標籤爲 未映射」

我是否需要爲每個計劃使用hql執行的查詢聲明一個POJO類?

+0

你想用'setString(「property」,「some prop value」)'方法做什麼?它似乎是'setParameter(String string,Object o)'而不是。您在實體類上執行HQL。你需要他們。毫無疑問。 – Tiny

+0

我同意..繼續使用POJO方法。 – user3137375

回答

0

使用Hibernate的:

要在HQL查詢在子句中使用的表FROM,你必須爲豆你的表映射

例1:

String hql = "SELECT e FROM " + MyEntity.class.getName() + " e "; 

myEntity所類必須映射現實表訪問你的數據庫(你可以使用JPA表示法或XML表示法,我更喜歡第二種)

你不能有一個真正的表,但將你的查詢結果重定向到一個bean中使用你的bean的一個構造函數進行映射。

例2:

String hql = "SELECT new " + MyNotMappedEntity.class.getName() + 
"(e.field1, e.field2)" + 
" FROM " + MyEntity.class.getName() + " e "; 

在例2類MyNotMappedEntity必須有一個正確與同類型傳遞兩個領域中的兩個參數的構造函數。

告訴我沒關係,或者你想要更多的信息。

相關問題