2009-07-20 41 views
2

我對Hibernate鴻溝(列1 /列2)。我需要在Hibernate條件查詢中執行select item.itemName, (item.Qty * item.Price)作爲項目項目的總價格。我試過,如何使處於休眠標準預測

objCriteria = objSession.createCriteria(ItemVO.class, "IT") 
.setProjection(Projections.projectionList() 
.add(Projections.property("IT.name"), "itemName") 
.add(Projections.sqlProjection("(QTY * cost)", new Float[] {"TotalCost"}, (new Type[] {Hibernate.Float})))) 
.setResultTransformer(Transformers.aliasToBean(ConsumableDTO.class)); 

但我需要用HQL名稱而不是直接sql查詢列名。如何實現它?

回答

2

不知道,如果你仍然有興趣在此,但我相信你可以真正把「和」關鍵字在你sqlProjection得到這個工作。

然後將查詢會是什麼樣子:

objCriteria = objSession.createCriteria(ItemVO.class, "IT") 
.setProjection(Projections.projectionList() 
.add(Projections.property("IT.name"), "itemName") 
.add(Projections.sqlProjection("sum(QTY * cost)", new Float[] {"TotalCost"}, (new Type[] {Hibernate.Float})))) 
.setResultTransformer(Transformers.aliasToBean(ConsumableDTO.class)); 

這將導致在第一個數組元素返回爲每個匹配項的對象[],名稱,並計算出「TOTALCOST」在第二。

+1

這種類型的先進典型,是很難得的。 – 2011-05-16 09:27:24