2012-07-26 44 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属性时从数据库中提取数据。