Reputation: 397
I have one action in my controller that upload csv file with list of numbers. Now the process is first I need to delete existing data from the table on certain condition then insert fresh data. My snippet code is as follows..
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)
}
}
After calling service method deleteNumbers
I'm getting blank list NEW LS:[]
, But then def numberExist = Number.findAllByNumberAndDeleted(number, false)
returns me a number means already exist.
Thanks..
Upvotes: 0
Views: 192
Reputation: 26
Try removing Number.withNewTransaction closure. Your code should work..
Upvotes: 1