簡體   English   中英

如何從托管bean中的ejb訪問jpql返回的集合

[英]how to access collection returned by jpql from ejb in managed bean

我有一個應用程序,我需要使用sum()和Func(年,...)函數觸發jpql查詢,這意味着只需要獲取2個字段並將其存儲到集合中,然后將此集合返回到托管bean。 現在我的問題是我如何使用此集合來檢索每個值。 下面是會話bean和托管bean代碼:

    public Collection getScripQtyYearWise(Integer scripID)
 {
    try
    {
     Collection coll=em.createQuery("select sum(t.tradeExecutedQuantity), FUNC('YEAR',t.tradeDateTime) from TradeStock t where t.scripID.scripID = :scripID group by FUNC('YEAR',t.tradeDateTime) ").setParameter("scripID", scripID).getResultList();
     return coll;
    }catch(Exception e){return null;}
 }

例如返回的數據:sum(qty)年210 2011 198 2012我需要提取followinf托管bean中返回的每條記錄中的每個值:

  objejb=(StockCommodityEJBStateless) new InitialContext().lookup("StockCommodityTest");
 Collection coll=objejb.getScripQtyYearWise(scripID1); // how to use this collection?

collObject[]Collection ,所以你可以像這樣解析它:

    for (Object o : coll) {
        Object[] res = (Object[]) o;
        Object sum = res[0];
        Object year = res[1];

    }

如果你想要一個List而不是Object [],你可以像這樣改變你的選擇:

Collection coll=em.createQuery("select new list(sum(t.tradeExecutedQuantity), FUNC('YEAR',t.tradeDateTime)) from TradeStock t where t.scripID.scripID = :scripID group by FUNC('YEAR',t.tradeDateTime) ").setParameter("scripID", scripID).getResultList();

在這里閱讀更多!

這樣的查詢將返回List<Object[]> 每個Object []將包含兩個元素:sum和函數調用的結果。

因此,迭代結果,並為每個結果創建一個有意義的對象:

public List<ScripQtyYearWise> getScripQtyYearWise(Integer scripID) {
    List<Object[]> list = em.createQuery("...").list();
    List<ScripQtyYearWise> result = new ArrayList<ScripQtyYearWise>(list.size());
    for (Object[] row : list) {
        result.add(new ScripQtyYearWise((Long) row[0], (Date) row[1]));
    }
    return result;
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM