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()valuesはオブジェクトを出力します)

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.salesAreaIdobj[0]

于 2013-03-01T13:26:17.637 に答える
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 に答える
1

JPAはORM仕様であるため、クエリ結果はオブジェクトのセットである必要があります。この最後をJPA実装として使用している場合は、hibernateの回避策があります(リストまたはハッシュマップの連想配列としてHibernateクエリ結果をフェッチする方法を参照)が、コードはHibernateに強く結合されます。
結果をresultSet(プリミティブ値のセット)として取得する場合は、jdbcを直接使用する必要があります。

問題が人間が読める方法で結果を出力することだけである場合は、すべてのJPAエンティティのtoString()メソッドをオーバーライドする必要があります。

于 2013-03-01T13:35:21.390 に答える