将User对象保存到另一个对象中

时间:2014-08-20 05:41:01

标签: grails groovy

我的User域类看起来像:

String name
String age
String gender
boolean status

如果用户的status字段为true,我需要将所有这些用户添加到以下域类Participant

String eventName
String schoolAttended
User user

到目前为止我尝试了什么:

// To get all users
User.findAll("from User as u where u. status =?", [true])

// To get each user and add them to `Participant`

// Save

2 个答案:

答案 0 :(得分:1)

因此,您想为状态等于Participant的每个User创建新的true个实例吗?如果是,您可以使用findAllBy*查找用户:

// get all users with status equal to true
def usersWithStatusTrue = Users.findAllByStatus(true)

usersWithStatusTrue.each { singleUser ->
    // create and persist participant for each user
    def participant = new Participant(user: singleUser, eventName: "...", schoolAttended: "...")
    participant.save(failOnError: true) 
}

答案 1 :(得分:0)

我将使用单个insert from select类型的SQL查询来完成任务

更新:

例如,请参阅MySql refdoc。您可以触发以下SQL命令:

Sql db = new Sql( dataSource )
db.execute "insert into participant ( user_id, event_name ) select user.id, 'some_event_name' from user"
db.close()

注意,如果你必须创建记录,只使用user.id我的例子就可以了。如果您需要为Participant课程获取来自不同来源的其他值,那么您应该坚持使用#pawel-piecyk的答案,因为它为性能价格提供了更多的力量