我有这样的代码......
Query query = em.createQuery("select CM.salesAreaId, SM.salesAreaDesc, count(CM.salesAreaId), sum(CM.openBal), " +
"sum(CM.netSales) from CustomerMaster CM, SalesAreaMaster SM where CM.salesAreaId=SM.salesAreaCode and CM.companyId=SM.companyId" +
" and CM.companyId=:companyId group by CM.salesAreaId, SM.salesAreaDesc");
query.setParameter("companyId", companyId);
List list = query.getResultList();
从上面的代码我怎样才能获得列表值?(list.get()值打印对象)
答案 0 :(得分:2)
试试这个
Query query = em.createQuery("select CM.salesAreaId, SM.salesAreaDesc, count(CM.salesAreaId), sum(CM.openBal), " +
"sum(CM.netSales) from CustomerMaster CM, SalesAreaMaster SM where CM.salesAreaId=SM.salesAreaCode and CM.companyId=SM.companyId" +
" and CM.companyId=:companyId group by CM.salesAreaId, SM.salesAreaDesc");
query.setParameter("companyId", companyId);
List list = query.getResultList();
for(Object o : list) {
Object[] obj = (Object[])o;
}
CM.salesAreaId
的值应该在obj[0]
答案 1 :(得分:1)
您可以使用for循环进行迭代,每次都提供索引。
for (int i = 0; i < list.size(); i++)
{
Object x = list.get(i);
...
}
http://docs.oracle.com/javase/6/docs/api/java/util/List.html#get(int)
答案 2 :(得分:1)
由于JPA是ORM规范,查询结果必须是一组对象。如果你最后使用这个作为JPA实现(请参阅How to fetch hibernate query result as associative array of list or hashmap),那么hibernate有一个解决方法,但是你的代码将大量耦合到hibernate。
如果要将结果检索为resultSet(原始值集),则应直接使用jdbc。
如果您的问题只是以人类可读的方式打印结果,那么您应该覆盖所有JPA实体的toString()方法。