GORM - Busca de elementos
15/01/2013 00:07
0
Boa noite!
Sou iniciante no Grails, efetuei diversas pesquisas e não encontrei nada semelhante para solucionar minha dúvida.

Segue dúvida abaixo:
Possuo três classes de domínio: Pessoa, Produto e Cartão. Segue as mesmas abaixo:

class Pessoa {

Integer id
String nome
String cpf
static hasMany = [cartoes:Cartao]
}

class Cartao {

Integer id
Long numero
Double Saldo
Boolean ativo
Integer via

static belongsTo = [produto:Produto]
static belongsTo = [pessoa:Pessoa]
}

class Produto {

Integer id
String nome
}

Gostaria de saber como retornar os dados de uma determinada pessoa e seus cartões considerando sempre a última via do cartão por produto.

O mais longe que cheguei foi:
[pessoas:Pessoa.findAllByNomeILike(“Pessoa 1%”)]


Desde já agradeço.
Tags: GORM


0
Fala Brother! Seje bem vindo ao forúm!! Vc pode usar criteria pra isso!

Segue um exemplo! Não testei :D

Pessoa pessoa = Pessoa.withCriteria(uniqueResult: true) {
cartao {
eq("produto", "seu produto")
eq("via", "sua via")
}
order("cartao", "desc")
firstResult(1)
}


Abraço!


0
Obrigado pela Boas vindas.

Pelo que entendi no exemplo acima é necessário eu passar o produto e a via?

Tipo queria algo como por exemplo:

Pessoa1 possui umas lista de cartões sendo três do produto1 e dois do produto2.

Como retornar a pessoa pelo nome e apenas na lista de cartões desta pessoa a ultima via do cartão de cada produto.

Desde já agradeço.
15/01/2013 11:45


0
Queria algo parecido com isto:

SELECT
*
FROM CARTAO CA(NOLOCK)
INNER JOIN PESSOA P WITH(NOLOCK)
ON P.ID_PESSOA = CA.ID_PESSOA
WHERE CA.ID_CARTAO = (SELECT MAX(CA2.ID_CARTAO)
FROM CARTAO CA2(NOLOCK)
WHERE CA2.ID_PRODUTO = CA.ID_PRODUTO
AND CA2.ID_PESSOA = CA.ID_PESSOA)
AND P.CPF = '111.111.111-11'
15/01/2013 17:30


0
Você pode fazer primiero uma consulta pelo valor máximo do identificador do cartão e depois passar como um 'in' dentro de outra criteria.


1
Segue solução abaixo:

def Pessoa p = Pessoa.get(id)

def c = Cartao.createCriteria()
def t = c.list {
eq("pessoa",p)
projections {
groupProperty("produto")
max("id")

}
}


Obrigado a todos que me ajudaram no processo.
15/01/2013 21:17


0
Que bom G4ngrel, precisando de qualquer coisa estamos aí.



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