Tôi gặp vấn đề lạ.
Tôi có hai lớp miền User
và Post
với các lĩnh vực:Tại sao grails ném ngoại lệ con trỏ null trong khi truy cập mối quan hệ hasMany lần đầu tiên?
class User {
String name
static hasMany = [posts: Post]
static constraints = { }
}
và
class Post {
String content
long date = System.getTimeInMillis()
static constraints = { }
static belongsTo = [user: User]
static mapping = {
version: 'false'
}
}
và mã điều khiển là:
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()
}
}
Đối với lần đầu tiên khi truy cập url http://localhost:8080/test/user/addUser
, nó ném ngoại lệ con trỏ null, nhưng sau khi nó hoạt động tốt.
Đây là ngoại lệ Tôi nhận
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)
và lần thứ hai, nó in và ám tốt như quyến rũ
Posts count: 0
Trong lớp người sử dụng tên miền, coz của hasMany
mối quan hệ cho posts
, posts
là một danh sách các đối tượng Post
sau đó không nên có ngoại lệ con trỏ null trên nhận được kích thước của danh sách trống, thay vì nó phải bằng không.
Bất kỳ giúp đánh giá cao
Cảm ơn Beckwith –