[英]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?
coll
是Object[]
的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.