4

我正在尝试与 grails/gorm 建立一对多的关系。我不明白如何处理空列表。

这是我的域类:


class Parent {
  List children
  static hasMany = [children: Children]
}

这是我的测试:


  void testEmptyChildren() {
    def parent = new Parent()
    assert 0, parent.children.size()
  }

这失败了“java.lang.NullPointerException:无法在空对象上调用方法大小()”

我应该怎么做才能处理一个空列表?

4

2 回答 2

7

在您的测试中, parent.children 将始终为 null (在添加第一个之前,不会初始化子级)。因此,您可以将测试更改为:

assertNull parent.children

当您保存父级(无论是否添加子级)或添加子级时,子级将被初始化。如果您希望它始终被初始化,您可以在定义子项时在父项中手动执行:

List<Children> children = new ArrayList<Children>()
于 2009-06-27T01:44:39.240 回答
0

我得到了类似的结果(也许孩子们保持为空)。请注意,您必须使用集成测试才能获得 gorm 的东西。

您可以按如下方式处理空列表:

parent.children?.each { println it}
parent.addToChildren(new Children(/* whatever you need */))
parent.children?.each { println it}
于 2009-06-27T02:22:17.790 回答