[DÚVIDA] - Query no banco de dados com findAll
07/10/2010 00:00
0
Pessoal,

Tenho duas entidades, no meu projeto Grails, em um relacionamento 1-N. Essas entidades são Contato e Email. Na conceituação do projeto, um contato tem vários Email (1-N), dessa forma coloquei hasMany em Contato, e belongsTo no Email. Até aí tudo bem. Só que preciso fazer uma query, que retorne todos os contatos, que tenham determinados atributos e que possuam determinados Emails. Por exemplo:

Um contato tem sexo (Masculino ou Feminino), e possui 2 emails, um <!-- e --><a href="mailto:casa@hotmail.com">casa@hotmail.com</a><!-- e --> e <!-- e --><a href="mailto:trabalho@hotmail.com">trabalho@hotmail.com</a><!-- e -->. Aí quero retornar todos os contatos, que sejam do sexo feminino que possuam um e-mail, cujo dominio seja hotmail.com. Como posso fazer isso, através do findAll da entidade Contato?

Vale lembrar que pra facilitar a verificação do domínio, a entidade Email, tem um atributo que se chama dominio, que armazena o dominio do Email.

Dessa forma: Contato 1 -------- N Email

Contato.findAll(o que coloco aqui?)

Abraços!
Tags: Grails


0
Finders dinâmicos só permitem executar consultas na própria entidade, e não nas agregadas.

Sendo assim, neste caso você poderia fazer duas consultas.

Primeiro listando as pessoas:
def pessoas = Contato.findAllBySexo(&quot;M&quot;) // supondo que sexo seja um atributo textual e que você só esteja armazenando &quot;M&quot; ou &quot;F&quot; nele
em seguida, os e-mails
def enderecos = Email.findAllByEnderecoLikeAndContatoIn(&quot;%hotmail.com&quot;, pessoas)



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