所以我有以下代码。
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()应该如何工作?
答案 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();