1

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

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

4

3 回答 3

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]

于 2013-03-01T13:26:17.637 回答
1

由于 JPA 是 ORM 规范,因此查询结果必须是一组对象。如果您将最后一个用作 JPA 实现,则休眠有一个解决方法(请参阅如何将休眠查询结果作为列表或哈希映射的关联数组获取),但您的代码将与休眠严重耦合。
如果要将结果作为结果集(原始值集)检索,则应直接使用 jdbc。

如果您的问题只是以人类可读的方式打印结果,您应该覆盖所有 JPA 实体的 toString() 方法。

于 2013-03-01T13:35:21.390 回答
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)

于 2013-03-01T13:26:51.703 回答