想要在同一个操作中删除和插入

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 闭包。您的代码应该可以工作..