Grails4 新手学习,flush:true总是出错

def del_teacher(){
        try {
            def teacher = Teacher.get(params.id)
            if(teacher){
                teacher.delete(flush: true)
                flash.teacherList_success = '删除成功'
            }else{
                flash.teacherList_error = '没有找到该信息'
            }
        }catch(Exception e){
            println e
            flash.teacherList_error = '删除失败'+e
        }
        redirect(action: 'teacherList')
    }

如果不加flush:true的话,可以提示删除成功,但是数据库数据没有被删除。如果加上flush:true的话就会异常javax.persistence.TransactionRequiredException: no transaction is in progress,这是为什么?包括save()方法也是,只要加上flush:true就会出异常