2009-07-20 10 views
2

Hibernateを初めて使用しています。私はselect item.itemName, (item.Qty * item.Price)をHibernate criteriaクエリのItem item 'から合計価格として実行する必要があります。私は試したハイバーネーションの基準投影で除算(column1/column2)を行う方法

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)); 

しかし、私は直接SQLクエリの列名の代わりにHQL名が必要です。それを達成する方法?

答えて

2

これに興味があるのか​​どうかはわかりませんが、実際にはsqlProjectionに 'sum'キーワードを置くことでこれを得ることができると思います。

あなたのクエリは、次のようになります。これは、最初の配列要素に名前と、一致した各項目のオブジェクト[]を返すになるはずである

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

このような先進的な例は、難しいものです。 –

関連する問題