Dúvida sobre classes de Muitos para muitos
29/08/2013 11:34
0
Olá pessoal,

estou fazendo gerenciador de tarefas, onde eu fiz 4 classes:
Tarefa
SituacaoTarefa

Tarefa 1:m SituacaoTarefa

Usuario
SituacaoUsuario

Usuario 1:m SituacaoUsuario

Tarefa m:m Usuario
(Tarefa)

package testetarefa

class Tarefa {
String nome
String descricao
Date data

static hasMany = [usuarios:Usuario,situacao:SituacaoTarefa]

static constraints = {
}
String toString(){ nome }
}
---------------------------------------------------------
(Usuario)
package testetarefa

class Usuario {
String nome
static hasMany = [situacao:SituacaoUsuario]


static constraints = {

}

String toString(){ nome }
}
--------------------------------------------------------
(SituacaoTarefa)
package testetarefa

class SituacaoTarefa {
String nome


static constraints = {
}

String toString(){ nome }

}
------------------------------------------------------
(SituacaoUsuario)
package testetarefa

class SituacaoUsuario {
String nome

String toString(){ nome }

static constraints = {
}
}
------------------------------------------------------

Agora vamos a minha dúvida:
1 - Setar a situação da tarefa (solicitado/pendente/em andamento/concluido)
1 - Quando crio uma nova tarefa, eu preciso marcar um ou mais usuários para realizar a tarefa;
3 - Setar o status do(s) usuario(s) que estejam Nesta tarefa 'Ocupado';

Como eu faço isso? Por que quando eu criei as classes desta forma, o mesmo mostrou um banco de dados, com as tabelas separadas mas a tabela: usuario_situacao_usuario não tem o campo da Tarefa, gerando um erro de duplicidade de dados quando eu tento adicionar um usuario a outra tarefa.

Desde já agradeço a ajuda.
Tags: relacionamento de classes; classes domain; controller;


0
Não consegui compreender direito a sua dúvida. É com relação ao relacionamento?
29/08/2013 12:48


0
Sim Luciano, é sobre relacionamento entre classes,
pois preciso criar uma estrutura de classes que permita ao Grails gerar os relacionamento onde eu possa buscar A situação do(s) Usuário(s) que estão relacionados em uma determinada Tarefa.
29/08/2013 13:13


0
Ok.

Acredito que sua relação possa ser repensada, como adicionar o "belongsTo" na outra ponta, etc..
Para ficar mais fácil, olhe esse link, ele descreve um relacionamento many-to-many no Grails. Por ser simples e ilustrativo, acho que possa ser mais tranquilo para você compreender.

Tente seguir este modelo adaptando ao seu contexto, caso ainda tenha dificuldades poste aqui.

[]'s
29/08/2013 13:22


0
Luciano,
Li a documentação que você passou, ele gerou as tabelas tudo de boa,
mas não implementou no form de Criar Tarefa uma maneira de me possibilitar selecionar o usuario e modificar seu Status, de modo que eu possa quais usuários estão (aguardando/livres/ocupados) NESTA tarefa.
Alguma outra dica?
29/08/2013 13:49


0
Leonam, o Grails gera um scaffold base para você, sendo assim, ele não consegue "gerar tudo sozinho" de acordo com as suas necessidades.

Feito o relacionamento, a sua necessidade agora está ligada a sua regra de negócio. Então, você terá de modificar e fazer de acordo com o necessário. Ou seja, alterar seus controllers, algum serviço se necessário, etc..

Se você precisa listar esses usuários, criar os dados de acordo com uma dada regra, terá de fazer isso manualmente.

Como você precisa escolher o usuário, você terá de buscar isso em seu domínio de usuários... da mesma forma que terá que tratar essas possibilidades de mudança de status. Existem diversas formas de fazer isso, podendo buscar e montar esse select box na view, buscar isso e passar por params do controller, etc.

Infelizmente não tem receita de bolo. Você terá de usar os recursos que o grails provê para adaptar as suas necessidades.

Dê uma olhada na documentação na parte da camada web. Lá você encontrará as ferramentas, ai cabe a você escolher como e quando utilizá-las.
29/08/2013 14:50


0
Entendi Luciano, mas a questão é, tereia que criar no braço a tabela: tarefa_usuarios_situacao(tarefa_id, usuario_id, situacao_id)??

Pois esta é justamente a questão, eu conheço a necessidade e este modo de fazer, mas não gostaria de ficar inserindo querys nos controlles assim, queria saber se existe uma forma de estruturar o relacionamento entre as classes de modo que o Grails criasse a tabela de relação entre as Três tabelas e assim evitasse possíveis problemas futuros.

Existe essa possibilidade?
30/08/2013 11:51



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