Problema ao setar valor da tabela relacionada.
17/01/2012 22:55
0
Tenho 2 classes, com o seguinte relacionamento:

class Tarefa {

String dsAssunto;
StatusTarefa statusTarefa;

static belongsTo = [StatusTarefa]
}

class StatusTarefa {

String dsStatusTarefa;
static hasMany = [tarefas:Tarefa]
}

Meu problema:

Criei um botão no meu formulario chamado "Encerrar Tarefa", com o controller:Tarefa e action:fecharTarefa.

No meu controle 'fecharTarefa' eu tenho o seguinte problema:
Eu quero setar o valor do meu status como 2(Fechado). Porem não tem como, pois se eu eu chamar: tarefaInstance.statusTarefa , ele esta chamando o objeto status tarefa e não a coluna do banco.

Estou 3 horas batendo cabeça nisso.
Tags: classes,relacionamento,controller,action


0
Oi Wellington, sua modelagem não está errada não? Um status de tarefa pode ter várias tarefas?

Não seria uma tarefa podendo possuir um status de tarefa não? Este hasMany no StatusTarefa não é desnecessário?

Provavelmente é isto que está te confundindo.


0
Cara, pode ser que sim,sou novato no Grails ainda. Como eu posso mudar para 1x1?
E como ficaria a nivel de codigo?

Valeu
18/01/2012 11:52


0
Oi Wellington. Fácil: só você remover o hasMany de StatusTarefa. É um problema mais de modelagem mesmo.


0
Ok, mais acredito que meu problema ainda não foi resolvido,
por que o statusTarefa ainda continua sendo um domain,
e como eu faço a mudança do valor que eu coloquei na primeira pergunta?
18/01/2012 13:50


0
Você também poderia implementar o seu StatusTarefa como se fosse um enum. Funcionaria da mesma maneira, como no exemplo abaixo:


class StatusTarefa {
Espera(1),
Executando(2),
Pronto(3);

StatusTarefa(int id) {
this.id = id
}

int id
}


Ai você não criaria uma tabela do tipo StatusTarefa, apenas um campo no formato int seria criado na sua tabela Tarefa.

Com relação a mudar o atributo conforme o seu código anterior, poderia ser feito da seguinte maneira:


// supondo que você vai buscar o status pelo id
def status = StatusTarefa.get(1)
// supondo que voce já tenha a tarefa instanciada
tarefa.status = status // pronto, setou


Entendi correto?


0
Olá Kiko,
parece bom o que você postou,
uma duvida:


class StatusTarefa {
Espera(1),
Executando(2),
Pronto(3);
.....

}


Esse Espera(1),Executando(2) , é assim mesmo? Não vai ser cadastrado no banco?
o que é ruim pra mim, pois o cara pode cadastrar mais estatus, conforme a necessidade.

Abs.
18/01/2012 15:14


0
Sim, no caso eu estou instanciando os valores do enum usando o construtor que defini logo abaixo.


0
Mais deve ter como setar outro valor... O Grails nao ia fura nessa parte.
18/01/2012 18:27


0
Oi Wellington, como assim?

Na realidade, este é um problema mais de modelagem do que de Grails especificamente.



Ainda não faz parte da comunidade???

Para se registrar, clique aqui.


Aprenda Groovy e Grails com a Formação itexto!

Newsletter Semana Groovy

Assinar

Envie seu link!


Livro de Grails


/dev/All

Os melhores blogs de TI (e em português) em um único lugar!

 
Creative Commons
RSS Grails Brasil é mantido por itexto Consultoria.
Em caso de problemas contacte Henrique Lobo Weissmann (Kico) por e-mail: kico@itexto.com.br
Todo o conteúdo presente neste site adota o Creative Commons como licença padrão.
Ver: 4.14.0
itexto