如何处理Grails / GORM中的空列表?

时间:2009-06-27 01:24:06

标签: grails gorm

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

这是我的域类:


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

这是我的测试:


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

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

我应该做些什么来处理空列表?

2 个答案:

答案 0 :(得分:7)

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

assertNull parent.children

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

List<Children> children = new ArrayList<Children>()

答案 1 :(得分:0)

我得到了类似的结果(也许孩子们保持无效)。请注意,您必须使用集成测试来解决这些问题。

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

parent.children?.each { println it}
parent.addToChildren(new Children(/* whatever you need */))
parent.children?.each { println it}