想要在同一个操作中删除和插入
Want to Delete and Insert in same Action
我的控制器中有一项操作是上传包含数字列表的 csv 文件。
现在的过程是首先我需要在特定条件下从 table 中删除现有数据,然后插入新数据。
我的代码片段如下..
控制器:
@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')
}
我的服务:
@Transactional
def deleteNumbers(){
Number.findAll().each {
it.deleted = true
it.save(flush: true)
}
}
调用服务方法后 deleteNumbers
我得到了空白列表 NEW LS:[]
,但是 def numberExist = Number.findAllByNumberAndDeleted(number, false)
returns 我的号码意味着已经存在。
谢谢..
尝试删除 Number.withNewTransaction 闭包。您的代码应该可以工作..
我的控制器中有一项操作是上传包含数字列表的 csv 文件。 现在的过程是首先我需要在特定条件下从 table 中删除现有数据,然后插入新数据。 我的代码片段如下..
控制器:
@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')
}
我的服务:
@Transactional
def deleteNumbers(){
Number.findAll().each {
it.deleted = true
it.save(flush: true)
}
}
调用服务方法后 deleteNumbers
我得到了空白列表 NEW LS:[]
,但是 def numberExist = Number.findAllByNumberAndDeleted(number, false)
returns 我的号码意味着已经存在。
谢谢..
尝试删除 Number.withNewTransaction 闭包。您的代码应该可以工作..