我有一个应用程序,我需要使用 sum() 和 Func(year,...) 函数触发 jpql 查询,这意味着只需要获取 2 个字段并将其存储到一个集合中,然后这个集合将用于返回到托管 bean。现在我的问题是我如何使用这个集合来检索每个值。下面是 session 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) year 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();
阅读更多 here !
关于java - 如何访问 jpql 从托管 bean 中的 ejb 返回的集合,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10912239/