Menu

1 Aralık 2011 Perşembe

JPQL`de SUM fonksiyonunda aritmetik islemler

Bilindigi gibi jpqlde sum fonksiyonunda aritmetiksel ismler yapmamiza izin vermiyor. Ama biz bunun gecici bir cozumunu asagidaki yontemle bulabiliriz.
Mesala ben asagidaki bir sql yazdigimda syntax error verecektir.
String sql = "SELECT SUM(p.price*l.quantity) FROM purchaseorders o JOIN orderlineitems l ON o.pono=l.pono JOIN products p ON l.prod_id=p.prod_id JOIN suppliers s ON p.sup_id=s.sup_id"
Ama biz asagidaki gibi bir class yaratip onu kullandigimizda sorunumuz cozulmus olacaktir.
    package jpqlexample.servlets;
    ...
    class LineItemSum {
           private Double price;
           private Integer quantity;
           private Double rslt;
           public LineItemSum (Double price, Integer quantity){
                 this.rslt = quantity*price;
           }
           public Double getRslt () {
                return this.rslt;
           }
           public void setRslt (Double rslt) {
                this.rslt = rslt;
           }
        }
Kullanimi :
String sql = "SELECT NEW jpqlexample.servlets.LineItemSum(p.price, l.quantity)
                       FROM PurchaseOrder o
                        JOIN o.orderLineItems l JOIN l.product p JOIN p.supplier"

1 yorum: