gpt4 book ai didi

grails - 批量更新的有效方法是从列表中顺序分配值?

转载 作者:行者123 更新时间:2023-12-02 15:19:20 24 4
gpt4 key购买 nike

假设有一个域p具有属性p。

class A{
Integer p
}

我有一个A的 list ,即
def lis = A.list()

然后我有一个数字列表
def num = [4, 1, 22, ......]

在grails中进行批量更新的最有效方法是什么,其中A的每个对象都从num连续分配了一个数字。

一种方法可能是
for(int i=0; i<lis.size(); i++){
lis[i].p = num[i]
lis[i].save(flush: true)
}

但是我认为这种解决方案效率不高。可以使用HQL或其他有效方法来实现吗?感谢您的帮助!谢谢!

最佳答案

尽管我同意您的解决方案可能效率不高,但这主要是由于您每次保存时都会刷新。因此,您可以使用transaction来提高性能;提交后会自动导致刷新:

A.withTransaction { status ->
...

for(int i=0; i<lis.size(); i++) {
lis[i].p = num[i]
lis[i].save()
}
}

当然,如果可以使用@ Transactional批注,那会更好。

是的,您可以使用HQL,但是这里的根本问题是您的数字列表是任意的,因此您将需要多个HQL查询。每次更新一个。

首先尝试事务方法,因为这是最容易设置的方法。

关于grails - 批量更新的有效方法是从列表中顺序分配值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40927299/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com