2012-07-26 67 views
2

我的領域類看起來是這樣的:Grails領域類的構造函數與ID,而不是對象

class UserEvent { 
    User user 
    Event event 
    boolean isAttending 
} 

生成的數據庫表看起來有以下欄目:

[ID , EVENT_ID, USER_ID , IS_ATTENDING ] 

我有事件的對象,只有用戶的ID號對象(user_id)。 我想創建僅與該數據的新UserEvent對象,而無需加載用戶對象,它可能是這個樣子:

def userEvent = new UserEvent(user:['id':user_id],isAttending: true, event: event) 

我已經嘗試了很多東西,但沒有找到解決方案。我認爲這是絕對有可能的,因爲它是在一個類似的方式使用參數中只包含關聯對象的IDS控制器來完成:

def userEvent= new UserEvent(params) 

我期待着找到解決方案。謝謝。

回答

5

當你說「不加載用戶對象」,你可以這樣做:

def userEvent = new UserEvent(user:User.load(user_id), isAttending: true, event: event) 

不像get,該load方法不打數據庫。而是創建一個代理對象,該對象只在第一次訪問非id屬性時從數據庫中提取數據。