4

grails/gorm を使用して 1 対多の関係を構築しようとしています。空のリストを処理する方法がわかりません。

ここに私のドメインクラスがあります:


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

これが私のテストです:


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

これは「java.lang.NullPointerException: Cannot invoke method size() on null object」で失敗します

空のリストを処理するにはどうすればよいですか?

4

2 に答える 2

7

テストでは、parent.children は常に null になります (最初の子を追加するまで、子は初期化されません)。したがって、テストを次のように変更できます。

assertNull parent.children

親を保存するとき (子が追加されるかどうかに関係なく)、または子が追加されるときに、子は初期化されます。常に初期化したい場合は、子を定義するときに親で手動で行うことができます。

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

私は同様の結果を得ています(おそらく子供たちはnullのままです)。ゴームのものを使用するには、統合テストを使用する必要があることに注意してください。

次のように空のリストを処理できます。

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