gpt4 book ai didi

grails - 想要删除和插入同一操作

转载 作者:行者123 更新时间:2023-12-02 15:18:35 27 4
gpt4 key购买 nike

我在 Controller 中执行一项操作,该操作上传带有数字列表的csv文件。
现在的过程是,首先我需要在一定条件下从表中删除现有数据,然后插入新数据。
我的代码段如下。

Controller :

@Transactional
def uploadFile() {

if(!params?.updateExisting){
println "Going to call service to delete records"
myService.deleteNumbers()

def newList = Number.findAllByDeleted(false)
println "NEW LS:"+newList
//HERE I'm GETTING BLANK
}

def file = request.getFile("fileCsv")

file.inputStream
.splitEachLine(',') { fields ->
Number.withNewTransaction {

def number = fields[0]?.toString().replaceAll(" ","").replaceAll("-","")
Number numberInstance = new Number()

def numberExist = Number.findAllByNumberAndDeleted(number, false)
//HERE NUMBER IS STILL EXIST
if(!numberExist){
numberInstance.number = number
numberInstance.save(flush:true)
count++
}else{
println "Number exist: "+number
}
}
}
redirect(uri:'/number/list')
}

myService:
@Transactional
def deleteNumbers(){
Number.findAll().each {
it.deleted = true
it.save(flush: true)
}
}

调用服务方法 deleteNumbers后,我得到的是空白列表 NEW LS:[],但是 def numberExist = Number.findAllByNumberAndDeleted(number, false)返回给我一个数字,表示已经存在。

谢谢..

最佳答案

尝试删除Number.withNewTransaction闭包。您的代码应该可以工作。

关于grails - 想要删除和插入同一操作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44714110/

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