更新数据库时 Grails GORM 锁定 table table
Grails GORM locks table when updating a DB table
我正在遍历大型数据集并更新每一行。
只要数据循环就锁定数据,直到全部完成才保存更改
我的代码:
在控制器中
stocks.each { stock ->
def s = stockService.updateData(stock)
stockService.save s
}
并且服务中的保存方法是唯一带有@Transactional:
@Transactional
private void save(Stock stock) {
stock.save(failOnError: true, flush: true)
}
如果您不希望数据集一直处于锁定状态,您可以为每次保存创建一个事务:
private void save(Stock stock) {
Stock.withNewTransaction {
stock.attach()
stock.save()
}
}
缺点是,无法回滚所有已更改的数据集。
我正在遍历大型数据集并更新每一行。 只要数据循环就锁定数据,直到全部完成才保存更改
我的代码:
在控制器中
stocks.each { stock ->
def s = stockService.updateData(stock)
stockService.save s
}
并且服务中的保存方法是唯一带有@Transactional:
@Transactional
private void save(Stock stock) {
stock.save(failOnError: true, flush: true)
}
如果您不希望数据集一直处于锁定状态,您可以为每次保存创建一个事务:
private void save(Stock stock) {
Stock.withNewTransaction {
stock.attach()
stock.save()
}
}
缺点是,无法回滚所有已更改的数据集。