2009-06-07 14 views
6

仮に、数量フィールドと価格フィールドを持つ永続クラスItemを持っているとします。 quantity * priceの合計を計算するCriteriaを作成する方法はありますか?休止状態の式

答えて

9

私はあなたもSQL投影を使うことができると思います。

session.createCriteria(Item.class) 
     .createAlias("item", "i") 
     .setProjection(Projections.projectionList() 
      .add(Projections.groupProperty("i.id")) 
      .add(Projections.groupProperty("i.price")) 
      .add(Projections.groupProperty("i.quantity")) 
      .add(Projections.sqlProjection( 
        "price * quantity as total", 
        new String[] { "total" }, 
        new Type[] { Hibernate.DOUBLE } 
       ) 
      ) 
     ); 

博多織

+0

合計を作成する機能がどこにある教えてくださいできます:のようなものでなければなりませんか?これにより、製品が作成されます。 – Victor

1

あなたが求めているのは正確ではありませんが、「派生したプロパティ」を使って、似たようなものを得ることができます。

たとえば、あなたがSQL式にtotalPriceプロパティをマッピングすることができます

<property name="totalPrice" formula="quantity * price" type="big_decimal"/> 

SQL式を「数量*価格」エンティティはデータベースから取得されるたびに評価されます。オリ

休止docs

はこのについての詳細情報が含まれています。

1

基準を使用して(おそらく)行うことはできません。しかし、これにはHQLが役に立ちます。

SELECT ent.quantity*ent.price from EntityName as ent WHERE ent.id = ?