2009-07-22 69 views
1

希望這將是一個容易回答的問題。我Grails中創建了一個類中調用播放器,它具有這樣的信息:在Grails控制器類中使用靜態「hasOne」屬性

class Player { 
String steamId 
String name 
String portrait 
static hasMany = {playerStatistics:PlayerStatistics} 
static hasOne = {playerForumProfile:PlayerForumProfile} 
} 

對於澄清,一個Player對象可以有一個PlayerForumProfile對象,但玩家對象總是創建的PlayerForumProfile對象。我的問題是訪問與PlayerForumProfile類的控制器內的「hasOne」屬性關聯的playerForumProfile對象。我本以爲,這樣做:

def playerForumProfileInstance = new PlayerForumProfile() 
    def playerInstance = Player.get(params.id) 

    playerForumProfileInstance = playerInstance.playerForumProfile 

將導致拉動與playerInstance對象關聯到playerForumProfileInstance變量PlayerForumProfile對象,但是當我嘗試這一點,Grails的拋出一個錯誤,告訴我有沒有這樣的財產playerForumProfile 。是否有可能以這種方式訪問​​hasOne屬性的對象,還是需要做其他的事情?

編輯:我也嘗試修改播放器類,以便它包括一個名爲playerForumProfile變量和編輯PlayerForumProfile所以它有一個屬於關聯聲明,但該保持導致空指針異常運行我的應用程序時。

編輯:多一點信息,我從零開始創建了一個新的grails應用程序,並創建了它在Grails文檔中出現的方式,並且它沒有任何問題地運行,所以我認爲只需啓動一個新應用程序並複製文件。

+0

看到,因爲我不是太遠沿着我的項目,我要重建它。希望這會解決錯誤。 – Neitherman 2009-07-22 17:08:04

+0

事實上,從頭開始重建程序解決了這個問題。 – Neitherman 2009-08-15 16:48:23

回答

3

對於grails 2.X和更高版本,這個答案不再正確,2009年最初的回答是這樣。

沒有在GORM一個「hasOne」屬性,它要麼屬於關聯:

static belongsTo = [playerForumProfile: PlayerForumProfile] 

或只是屬性名稱的常規類型的定義,如果沒有通過屬於關聯暗示級聯關係:

PlayerForumProfile playerForumProfile 

有關詳細信息,請參閱one-to-one GORM documentation

+0

我檢查了文檔,我說的是當我嘗試他們的例子並運行我的應用程序時,我在Player類中放置一個PlayerForumProfile對象(作爲屬性)時得到一個空指針。 – Neitherman 2009-07-22 14:16:49

+0

從技術上講,這是正確的答案。 – Neitherman 2009-07-22 17:08:39