¿Por qué los griales lanzan una excepción de puntero nulo al acceder a la relación hasMany por primera vez?
Tengo un problema extraño
Tengo dos clases de dominioUser
yPost
con campos:
class User {
String name
static hasMany = [posts: Post]
static constraints = { }
}
class Post {
String content
long date = System.getTimeInMillis()
static constraints = { }
static belongsTo = [user: User]
static mapping = {
version: 'false'
}
}
y el código del controlador es:
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()
}
}
Por primera vez al acceder a urlhttp://localhost:8080/test/user/addUser
, arroja una excepción de puntero nulo, pero después de esto funciona bien.
Esta es la excepción que recibo
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)
y por segunda vez, imprime y se ve bien como encanto
Posts count: 0
En la clase de dominio de usuario, porquehasMany
relación paraposts
, posts
es una lista dePost
objetos, entonces no debería haber una excepción de puntero nulo al obtener el tamaño de la lista vacía, sino que debería ser cero.
Cualquier ayuda apreciada