我的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
答案 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的答案,因为它为性能价格提供了更多的力量