Remover Associação entre objetos
17/05/2012 22:46
class Professor implements Comparable {
static searchable = true
String nome
Date dataAdmissao
static belongsTo = [cidade: Cidade, escola: Escola]
static hasMany = [aluno: Aluno]
int compareTo(obj) {
id.compareTo(obj.id)
}
String toString(){
return "${this.nome}"
}
}
class Cliente implements Comparable{
String codigo
String nome
static belongsTo = [professor: Professor]
int compareTo(obj){
id.compareTo(obj.id)
}
String toString(){
return "${this.nome}"
}
}
def delete = {
def professorInstance = Professor.get(params.id)
try {
if(professorInstance.aluno){
def alunosRelacionados = professorInstance.aluno.findAll{it.id > 0}
professorInstance.removeFromAlunos(alunosRelacionados)
}
professorInstance.delete(flush: true)
flash.message = "Professor Excluído"
redirect(action: "list")
}
...
Error 500: Executing action [delete] of controller [ProfessorController] caused exception: groovy.lang.MissingMethodException: No signature of method: static Professor.removeFromAlunos() is applicable for argument types: (java.util.HashSet) values: [[Antrilho Passos, Agustinho Carrara]] Possible solutions: removeFromAluno(java.lang.Object)
static hasMany = [alunos: Aluno]
static hasMany = [alunos: Aluno]
static mapping = { alunos cascade: "delete" }
professorInstance.alunos.each{
it.professor=null
it.save() // não tenho certeza se essa linha é necessária
}
Para se registrar, clique aqui.