【发布时间】:2011-10-19 21:06:58
【问题描述】:
我有一个奇怪的问题。
我有两个域类 User 和 Post 字段:
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'
}
}
控制器代码为:
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()
}
}
第一次访问 url http://localhost:8080/test/user/addUser 时,会抛出空指针异常,但之后就可以正常工作了。
这是我得到的例外
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)
第二次,它像魅力一样打印和渲染
Posts count: 0
在用户域类中,因为posts、posts 的hasMany 关系是Post 对象的列表,那么在获取空列表的大小时不应该出现空指针异常,而是应该为零。
任何帮助表示赞赏
【问题讨论】:
标签: grails grails-orm