Query.getResultList()的工作原理

时间:2016-01-20 06:17:25

标签: eclipselink jpql

所以我有以下代码。

Query query = getEntityManager()
                    .createQuery(
                            "SELECT m.memCategory, m.copClass, SUM(b.paidAmt) paidAmt FROM BuildingFundModel b "
                            + "INNER JOIN b.memberModel m WHERE b.memberModel != NULL AND b.paidDt BETWEEN :dtFrom AND :dtTo "
                            + "GROUP BY m.memCategory, m.copClass");            

query.setParameter("dtFrom", dtFrom);
query.setParameter("dtTo", dtTo);

lstObj = query.getResultList();

但是,当我运行它时,它总是只返回两列。这是Query.getResultList()应该如何工作?

2 个答案:

答案 0 :(得分:0)

此查询将返回包含一个或多个Object []的列表。列表中的项目数与返回的行数相关,而每个Object []应包含3个项目,每列一个。

答案 1 :(得分:0)

Query.getResultList()方法使用query.setParameter中的变量替换查询中的占位符。然后它执行查询,返回SELECT语句中选择的内容。 试试这个问题:

Query query = getEntityManager().createQuery(
"SELECT m.memCategory, m.copClass, SUM(b.paidAmt)
 FROM BuildingFundModel b 
 INNER JOIN b.memberModel m 
 WHERE b.memberModel IS NOT NULL AND b.paidDt BETWEEN :dtFrom AND :dtto
 GROUP BY m.memCategory,m.copClass");

query.setParameter("dtFrom", dtFrom);
query.setParameter("dtTo", dtTo);

lstObj = query.getResultList();