這裏是我的領域類的定義:添加域對象格姆關係得到空指針異常
class Profile {
PhotoAlbum photoAlbum
static constraints = {
photoAlbum(nullable:true)
}
}
class PhotoAlbum {
static hasMany = [photos:Photo]
static belongsTo = [profile:Profile]
}
class Photo {
static belongsTo = PhotoAlbum
}
在控制器我有一個實例化的配置文件的域。該域名始於空白photoAlbum。如果我想補充的第一張照片,我會在畫冊一個空指針異常:
Photo photo = new Photo()
profile.photoAlbum.addToPhotos(photo)
什麼grailsy方式做到這一點,避免空指針異常:
Photo photo = new Photo()
if (!profile.photoAlbum) { profile.photoAlbum = new PhotoAlbum) }
profile.photoAlbum.addToPhotos(photo)
我會認爲如果photoAlbum爲null,當我嘗試將第一個照片對象添加到它時,grails會創建一個新的。雖然上面的3行代碼工作,但我想知道是否有更好的方法來完成2行代碼中的同一件事。
你正在做的以及是可以做到的,恕我直言。任何不是託管集合(hasMany)的開始爲null的屬性都將爲空,直到您使其不爲空。 Grails/Groovy不能假定僅僅因爲你的代碼試圖在一個空對象上設置一個屬性,你打算讓它爲你實例化它。 – Gregg