我的域类如下所示:

class UserEvent {
    User user
    Event event
    boolean isAttending
}

生成的数据库表的外观包含以下列:
[ID , EVENT_ID, USER_ID , IS_ATTENDING ]

我有事件对象,只有用户对象的ID(user_id)。
我只想使用此数据创建新的UserEvent对象,而不加载User对象,它可能看起来像这样:
def userEvent = new UserEvent(user:['id':user_id],isAttending: true, event: event)

我尝试了很多事情,但没有找到解决方案。我认为这绝对是可能的,因为它可以通过仅包含关联对象的id的 Controller 中的params来完成:
 def userEvent= new UserEvent(params)

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

最佳答案

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

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

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

关于grails - 使用id而不是object的Grails域类构造函数,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/11668339/

10-12 19:40