我正在尝试与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对象上调用方法大小()”
我应该做些什么来处理空列表?
答案 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}