我有一个域类对象列表:
def books = Books.findAllByTitleLike("%Hobbit%")
现在我要更新此列表中所有图书中的“可用”属性。通常,我会这样做
books.each {
it.available = false;
it.save()
}
有没有更好的方法呢?我应该在一次交易中做到吗?像:
Book.withTransaction { ... }
答案 0 :(得分:3)
您可以使用executeUpdate
使用批量更新def updatedRecords = Book.executeUpdate("update Book set available = 'false' where title like'%Hobbit%' ")
每条评论: 它的hql和它类似于sql。
这是另一种方法(内部查询):
def sql = """update Domain
set $fieldName = '$fieldValue'
where id in (select id from Domain1 where seqId = '$myid')"""
def updatedRecords = Domain.executeUpdate(sql)
或者 这一行:
"... where id in ('123','132','111')
我没有测试过这个,但你可能会说
def list= ['123','132','111']
" ... where id in ($list)"