0

考虑以下领域模型:

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对象的列表呢?

4

1 回答 1

3

您显示的对象不是 NULL,但id对象的当前为 NULL:每个 grails 域对象都有一个toString()将打印的方法${name of the class} : ${id of the instance}。如果您收到输出,如您所示,这通常意味着您的实例是存在的(否则会抛出 NPE!),但是尚未从数据库中获取 id。

  1. 我猜你之前在代码中创建了对象。您需要刷新上下文,否则不会创建 id。
  2. 您应该声明,您Sale属于Customer. http://grails.org/doc/latest/guide/GORM.html#manyToOneAndOneToOne

顺便说一句:以单数命名您的域类。所以重命名SalesSale.

于 2012-04-09T13:13:53.387 回答