Sql grails的JasperReports:使用HashMap作为模型?

Sql grails的JasperReports:使用HashMap作为模型?,sql,grails,groovy,jasper-reports,jasper-plugin,Sql,Grails,Groovy,Jasper Reports,Jasper Plugin,假设我在Groovy中有两个类似的类: class Person { int id; String name; } class Item { int id; int price; } 现在,使用以下SQL创建一个列出所有人姓名的JasperReport将非常简单: SELECT name FROM Person 此外,还可以很容易地传递一个模型,从中创建列表: def p = Person.withCriteria { eq('name','SomeGuy') } c

假设我在Groovy中有两个类似的类:

class Person {
  int id;
  String name;
}

class Item {
  int id;
  int price;
}
现在,使用以下SQL创建一个列出所有人姓名的JasperReport将非常简单:

SELECT name FROM Person
此外,还可以很容易地传递一个模型,从中创建列表:

def p = Person.withCriteria {
   eq('name','SomeGuy')
}
chain(controller:'jasper',action:'index',model:[data:p],params:params)
但我要做的是使用以下查询:

SELECT name, (SELECT sum(i.price) FROM Item f WHERE f.id=p.id) as priceSum FROM Person p
现在我不知道该怎么做了:我怎样才能把任何模型传递给jasperReport?我不能只使用

def p = Person.withCriteria {
   eq('name','SomeGuy')
}
因为这样,priceSum属性就会丢失。 我想做的是这样的:

def l = ['name':'SomeGuy','priceSum':'5000']
chain(controller:'jasper',action:'index',model:[data:l],params:params)
但这也不起作用,它给了我:

 Message: Cannot get property 'name' on null object 
 Caused by: java.lang.NullPointerException: Cannot get property 'name' on null object 

有没有类似的方法可以奏效?

您是否尝试过传递地图列表,而不是单独传递地图<代码>定义l=[['name':'SomeGuy','priceSum':'5000']]