Grails控制台插件(意外结果)
我有两个领域类别:Grails控制台插件(意外结果),grails,Grails,我有两个领域类别: class Persona { String nombre String apellidos static hasMany = [pertenencias: Pertenencia] static constraints = { } static mapping = { pertenencias cascade: "all-delete-orphan" } } class Pertenenc
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()
时,它会从数据库中删除角色的“pertenencias”集合(如预期的那样)
我已经安装了,第一次在控制台中执行saveAll()
服务方法的行时,结果是数据库中的“persona”及其“pertenencia”。然后我在控制台中执行deletePertenencias()
服务方法的行,但它不删除数据库的数据,“persona”对象包含“pertenencias”(好像我没有运行deletePertenencias()代码)
有人知道为什么从控制台执行的代码会产生意外的结果吗?
我希望控制器和控制台的结果相同,但行为不同。在服务中,
saveAll()
创建新的Persona
和Pertenencia
实例。和deletePertenencias()
始终清除pertenencias
集合,但仅针对ID为1的Persona
实例。这是实际代码的工作方式,还是示例中的错误?为了简单起见,我从id 1重新启动grails进行测试