2009-06-07 22 views

cevap

9

Ayrıca bir SQL projeksiyonu da kullanabilirsiniz.

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

Ori

+0

sen söyler misin nerede toplam yaratan fonksiyonu: Bu şey gibi olmalıdır? Bu sadece ürünü yaratır. – Victor

1

Tam olarak istediğin şey bu değil, ancak benzer bir şey elde etmek için "türetilmiş özellikler" özelliğini kullanabilirsiniz.

Örneğin, bir SQL ifadesi için bir totalPrice özelliğini bağlanabilirler:

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

SQL formül "miktar * fiyat" varlık veritabanından alınır her zaman değerlendirilir. Ori

hazırda docs

bu konuda daha fazla bilgi içerir.

1

(Muhtemelen) Kriterler ile yapmak mümkün değildir. Ancak HQL bunun için yararlı olabilir.

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