Как мне обработать пустой список в Grails / GORM? - PullRequest
4 голосов
/ 27 июня 2009

Я пытаюсь установить отношения один-ко-многим, работая с Граалями / Гормом. Я не понимаю, как обращаться с пустым списком.

Вот мой класс домена:

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

Вот мой тест:

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

Сбой «java.lang.NullPointerException: невозможно вызвать метод size () для нулевого объекта»

Что я должен сделать, чтобы обработать пустой список?

Ответы [ 2 ]

7 голосов
/ 27 июня 2009

В вашем тесте parent.children всегда будет нулевым (дети не будут инициализированы, пока вы не добавите первый). Таким образом, вы можете изменить свой тест на:

assertNull parent.children

Дочерние элементы будут инициализированы при сохранении родительского элемента (независимо от того, добавлены ли дочерние элементы) или когда добавлены дочерние элементы. Если вы хотите, чтобы он всегда инициализировался, вы можете сделать это вручную в Parent, когда определяете дочерние элементы:

List<Children> children = new ArrayList<Children>()
0 голосов
/ 27 июня 2009

Я получаю похожие результаты (возможно, дети остаются нулевыми). обратите внимание, что вы должны использовать интеграционный тест для того, чтобы все вокруг было в порядке.

вы можете обработать пустой список следующим образом:

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