考虑以下域模型:
class Sales{
String salesInvoice
Customer customer
}
class Customer{
int customerNumber
String name
}
问题:我正在尝试检索给予客户的所有销售。因此代码:
def sales = Sales.findAllByCustomer(Customer.get(params.id))
我没有收到客户的问题。但是当我使用println sales.dump()
时,我会得到类似
<java.util.ArrayList@d3a25f8 elementData=[mypackage.Sales : null, mypackage.Sales : null] size=2 modCount=3>
如果我理解正确,这意味着查询能够获得Sales
的列表,但我不太明白为什么它会返回空值列表?我已经尝试过急切的提取,但我认为这不会适用于这个特定的问题。那么如何获得非空Sales
对象的列表呢?
答案 0 :(得分:3)
您显示的对象不是NULL,但对象的id
当前为NULL:每个grails域对象都有一个toString()
方法,它将打印${name of the class} : ${id of the instance}
。如果您收到的输出(如您所示)通常意味着您的实例已存在(否则会抛出NPE!),但是尚未从数据库中获取ID。
Sale
属于Customer
。 http://grails.org/doc/latest/guide/GORM.html#manyToOneAndOneToOne BTW:以单数形式命名您的域类。因此,请将Sales
重命名为Sale
。