【问题标题】:Grails domain class constructor with id instead of object带有id而不是对象的Grails域类构造函数
【发布时间】:2012-07-26 11:31:21
【问题描述】:

我的域类如下所示:

class UserEvent { 
    User user
    Event event
    boolean isAttending
}

生成的数据库表看起来有以下列:

[ID , EVENT_ID, USER_ID , IS_ATTENDING ]

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

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

我尝试了很多方法,但没有找到解决方案。我认为这绝对是可能的,因为它是用类似的方式完成的,控制器中的参数只包含关联对象的 id:

 def userEvent= new UserEvent(params)

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

【问题讨论】:

    标签: grails grails-orm grails-domain-class


    【解决方案1】:

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

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2019-11-05
      • 1970-01-01
      • 1970-01-01
      • 2022-12-18
      • 2015-01-19
      • 2017-06-03
      • 1970-01-01
      相关资源
      最近更新 更多