从列表对象中获取值

时间:2013-03-01 13:19:55

标签: java list jpa

我有这样的代码......

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()值打印对象)

3 个答案:

答案 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()方法。