我已經使用HQL修復了我的問題,它工作得很好。什麼是Hibernate相當於Projections.Cast?
但我喜歡Criteria API。 (我在我的querybuilder字符串中有幾個ifs語句用於HQL,yuck) 顯然Projections.sum(property)返回double。
我的實體類有
@Column(name = "current_volume")
private Integer currentVolume;
我得到的錯誤是
org.hibernate.PropertyAccessException:同時呼籲se.unox.pejl.entity.value.pejl的二傳手發生IllegalArgumentException異常。 PejlDataTrendValue.currentVolume。
我等效工作HQL是
select cast(sum(p.currentVolume/1000) as integer) as currentVolume from
se.unox.pejl.entity.value.pejl.PejlDataTrendValue as p
我想我知道問題是什麼,但無法弄清楚如何投欄的總和(這是INT(11)在MySQL)爲整數。顯然,NHibernate的已經Projections.Cast
基於this blog post我使用Hibernate 3.6
謝謝阿隆!所以它變成了Long而不是我假設的兩倍。難怪我得到例外。實體班已有幾年了,我真的不想改變它。 我正在尋找的是簡單的NHibernate風格鑄造新代碼,我添加,而不是接觸舊的。 我想我會堅持使用HQL。 –
既然如此,嘗試覆蓋在我的答案的底部。 – atrain
當我有我的實體bean與映射的屬性時,我不知道寫在數據庫列名稱(SQL投影)。 –