2011-06-15 122 views
4

我加入一個公式字段:休眠@Formula建築查詢錯誤

@Formula(value = "(select count(*) from approvalGroup as a where a.isAccounting=true)") 

但查詢失敗,因爲Hibernate試圖讓我的對象「真實」的字段。
例外:

[ERROR] Unknown column 'approvalgr0_.true' in 'where clause' 

我怎麼能告訴Hibernate,這是一個恆定值,這也不是它需要從實體對象中檢索?

回答

10

Josh,Hibernate公式是作爲原生SQL(而不是HQL)應用的,並且您的DBMS的SQL方言可能沒有true關鍵字。請嘗試更改代碼如下

@Formula(value = "(select count(*) from approvalGroup as a where a.isAccounting)") 

還可以使用DB列名,而不是使用持久實體屬性的名稱。

+0

感謝您的回覆。我剛剛發現@Formula(value =「(從approvalGroup中選擇count(*)as a.isAccounting = 1)」)也適用。另外,我正在使用sql和db列名。 – Josh 2011-06-15 16:09:46

+1

但是你不覺得「= 1」是多餘的嗎? – Trader001 2011-07-05 15:09:48

+0

@ Trader001如果列類型也允許其他值,則不適用。 – 2014-01-15 22:49:40