2011-04-18 84 views
1

這應該很容易,但是我的應用程序會拋出常量錯誤,而我是Hibernate的新手。將SQL轉換爲HQL其中第

我想在我的web應用程序中使用Hibernate進行簡單的HQL查詢。

我想執行下面的SQL查詢:

SELECT * FROM deal WHERE deal_status='A' OR WHERE deal_status='O'; 

HQL似乎並不在我的web應用程序使用或條款的工作,在這裏我目前的HQL語句:

FROM deal d where d.deal_status='O' or d.deal_status='A' order by d.id 

感謝您的任何休眠查詢幫助

關注 亞歷克斯

+2

發佈你的錯誤異常,你知道HQL是基於你的實體類,而不是你的數據庫模式? – jishi 2011-04-18 11:45:47

+0

你的SQL有一個語法錯誤:你只能寫一個WHERE – Ralph 2011-04-18 12:11:22

+0

這是我的愚蠢問題,thx jishi! – 2011-04-18 13:09:35

回答

3
  • 的HQL是基於你的實體不是你的類的字段的名稱和類名
  • c.id - c未定義

我強烈認爲,在新政的領域(類別名稱第一字母大寫)不是deal_status,而是狀態,那麼查詢必須是這樣的。 (我跳過了c.id的東西,因爲我不知道你這個是什麼意思。)

SELECT d FROM Deal d WHERE d.status='O' or d.status=`A` 

通知,新政

上d這是否Deal.status是隻會工作一個字符串或類似的東西,但不是如果它是一個枚舉。處理Enum的一種方法是:

Query query = session.createQuery(
    "SELECT d FROM Deal d WHERE d.status=:o or d.status=:a"); 
query.setParameter("a", MyEnum.A); 
query.setParameter("o", MyEnum.O); 
+0

哦對不起,它應該是D! – 2011-04-18 13:04:54

+0

你如何使用ENUM類型?因爲它是一個! – 2011-04-18 13:05:46

+0

nl.strohalm.cyclos.entities.coupon.Coupon $ DealStatus 2011-04-18 13:08:30