想象一下,我在 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
有什么类似的东西可以工作吗?