我有两个域名分支:
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为什么从控制台执行的代码会产生意想不到的结果? 我希望控制器和控制台的结果是一样的,但行为是不同的。