Warum Grails werfen Null Zeiger Ausnahme beim ersten Zugriff auf hasMany Beziehung?

Habe ich ein komisches problem.

Ich habe zwei domain-Klassen User und Post mit Feldern:

class User {
  String name
  static hasMany = [posts: Post]
  static constraints = { }
}

und

class Post {
  String content
  long date = System.getTimeInMillis()
  static constraints = { }

  static belongsTo = [user: User]
  static mapping = {
    version: 'false'
  }
}

- und controller-code ist:

class UserController {
  def addUser = {
    def user
    if (User.count() == 0) {
      user = new User()
      user.name = "Manish Zedwal"
      user.save(flush: true)
    } else {
      user = User.get(1)
    }
    println "Posts count: " + user.posts.size()
    render "post count: " + user.posts.size()
 }
}

Zum ersten mal während des Zugriffs auf die url http://localhost:8080/test/user/addUser ist, wird null-Zeiger-Ausnahme, aber nach dieser gut funktioniert.

Dies ist die Ausnahme, ich bin immer

2011-08-04 15:41:25,847 [http-8080-1] ERROR errors.GrailsExceptionResolver  - Exception occurred when processing request: [GET] /test/user/addUser
Stacktrace follows:
java.lang.NullPointerException: Cannot invoke method size() on null object
        at test.UserController$_closure2.doCall(UserController.groovy:18)
        at test.UserController$_closure2.doCall(UserController.groovy)
        at java.lang.Thread.run(Thread.java:636)

und zum zweiten mal, er druckt und macht feinen Charme wie

Posts count: 0

Benutzer In der domain-Klasse, coz der hasMany Beziehung für postsposts ist eine Liste von Post Objekte, dann sollte es kein null-Zeiger-Ausnahme auf die Größe von leer-Liste sein, sondern es sollte gleich null sein.

Jede Hilfe dankbar

InformationsquelleAutor der Frage mj.scintilla | 2011-08-04

Schreibe einen Kommentar