Grails控制台插件(意外结果)

时间:2015-11-09 02:28:28

标签: grails

我有两个域名分支:

class Persona {

    String nombre
    String apellidos

    static hasMany = [pertenencias: Pertenencia]

    static constraints = {

    }

    static mapping = {
        pertenencias cascade: "all-delete-orphan"
    }
}


class Pertenencia {

    String nombre
    static belongsTo = [persona:Persona]

    static constraints = {
    }
}

服务:

class MembresiaService {

@Transactional
    def saveAll() {
        def p = new Persona(nombre: 'carlos', apellidos: 'gm')
        p.addToPertenencias(nombre: 'auto')
        p.addToPertenencias(nombre: 'computadora')
        p.addToPertenencias(nombre: 'casa')
        p.save()
    }

    @Transactional
    def deletePertenencias() {
        def p = Persona.get(1)
        p.pertenencias?.clear()
    }
}

控制器:

class TestController {
    def membresiaService

    def index() {}

    def saveAll() {
        membresiaService.saveAll()
        redirect(action: "index")
    }

    def deletePertenencias() {
        membresiaService.deletePertenencias()
        redirect(action: "index")
    }
}

当我从控制器执行saveAll()方法时,它将数据保存在数据库中,当我从控制器执行deletePertenencias()时,它会从数据库中删除Persona的“pertenecias”集合(如预期的那样)。 / p>

我安装了Grails console plugin,第一次在控制台中执行saveAll()服务方法行,结果是数据库中的“persona”及其“pertenencias”。然后我在控制台中执行deletePertenencias()服务方法的行,但它不删除数据库的数据,“persona”对象保留“pertenencias”(好像我没有运行deletePertenencias()代码)。 / p>

任何kwnow为什么从控制台执行的代码会产生意想不到的结果? 我希望控制器和控制台的结果是一样的,但行为是不同的。

0 个答案:

没有答案