2

ドメイン クラス オブジェクトのリストがあります。

def books = Books.findAllByTitleLike("%Hobbit%")

ここで、このリスト内のすべての書籍でプロパティ "available" を更新したいと考えています。通常、私はするだろう

books.each {
   it.available = false;
   it.save()
}

それを行うより良い方法はありますか?1 回のトランザクションで行う必要がありますか? お気に入り:

Book.withTransaction { ... }
4

1 に答える 1

4

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)"
于 2013-04-10T17:37:50.337 に答える