如何在Grails中一次保存一个集合

use*_*253 0 collections grails

例如,我需要检索一个表中的几个寄存器,并编辑一个字段,但是用一个循环保存所有内容需要很长时间,是否存在更好的保存方法?这是我怎么做的....

class Table

   static mapping = {
      table "TABLEEX"
      id generator:'sequence', params:[sequence:'TABLEEX_SEQ']
   }

   // identificacion
   String data1
   String data2
}
Run Code Online (Sandbox Code Playgroud)

并搜索数据:

def stuff = Table.createCriteria().list{
   eq("data1","1")
}
Run Code Online (Sandbox Code Playgroud)

并编辑和保存

stuff.each {
   it.data2 = "aaa"
   it.save()
}
Run Code Online (Sandbox Code Playgroud)

Jef*_*own 5

目前尚不清楚为什么要检索要开始的对象.这是你想要的东西吗?

Table.executeUpdate("update Table t set t.data2=:newData where t.data1=:oldData", [newData: 'BAR', oldData: 'FOO'])
Run Code Online (Sandbox Code Playgroud)

编辑

你也可以这样做......

def query = Table.where {
    data1 == 'FOO'
}
int total = query.updateAll(data2:'BAR')
Run Code Online (Sandbox Code Playgroud)

  • 对.`where`查询真的是要走的路.我首先编写HQL示例的唯一原因是我对另一个回答中的注释感到惊讶,该回答断言Hibernate不支持这一点而不迭代所有对象.HQL示例可行,但有许多原因使`where`查询更好.很高兴有帮助! (2认同)