具有id而不是object的Grails域类构造函数

时间:2012-07-26 11:31:22

标签: grails gorm grails-domain-class

我的域类看起来像这样:

class UserEvent { 
    User user
    Event event
    boolean isAttending
}

生成的数据库表外观有以下列:

[ID , EVENT_ID, USER_ID , IS_ATTENDING ]

我有Event对象,只有User对象的id(user_id)。 我想用这个数据创建新的UserEvent对象,而不加载User对象,它可能看起来像这样:

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

我尝试过很多东西,但没有找到解决方案。我认为这绝对是可能的,因为它与控制器中的params类似,只包含关联对象的ID:

 def userEvent= new UserEvent(params)

我期待找到解决方案。谢谢。

1 个答案:

答案 0 :(得分:5)

当您说“不加载用户对象”时,您可以这样做:

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

get不同,load方法不会访问数据库。相反,它创建了一个代理对象,该对象仅在第一次访问非id属性时才从数据库中提取数据。