2009-07-20 90 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