Grails GORM findAll返回null集合

时间:2012-04-09 12:20:32

标签: grails gorm findall

考虑以下域模型:

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

1 个答案:

答案 0 :(得分:3)

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

  1. 我猜你之前在代码中创建对象。您需要刷新上下文,否则不会创建id。
  2. 您应该声明,Sale属于Customerhttp://grails.org/doc/latest/guide/GORM.html#manyToOneAndOneToOne
  3. BTW:以单数形式命名您的域类。因此,请将Sales重命名为Sale