【问题标题】:Get values from list object从列表对象中获取值
【发布时间】:2013-03-01 13:19:55
【问题描述】:

我有这样的代码...

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

【问题讨论】:

  • 您正在使用哪个 JPA 实现?
  • JPA 不是我的问题...我必须从列表中获取值
  • 建议:使用 Eclipse 调试器来查找这些东西——比如返回的数据结构是什么

标签: java list jpa


【解决方案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();
for(Object o : list) {
    Object[] obj = (Object[])o;

}

并且CM.salesAreaId的值应该在obj[0]

【讨论】:

    【解决方案2】:

    您可以使用 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)

    【讨论】:

      【解决方案3】:

      由于 JPA 是 ORM 规范,因此查询结果必须是一组对象。如果您将最后一个用作 JPA 实现(请参阅How to fetch hibernate query result as associative array of list or hashmap),则休眠有一个解决方法,但您的代码将与休眠严重耦合。
      如果要将结果作为结果集(原始值集)检索,则应直接使用 jdbc。

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

      【讨论】:

        猜你喜欢
        • 2019-05-08
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2016-04-02
        • 1970-01-01
        • 1970-01-01
        • 2014-08-07
        相关资源
        最近更新 更多