Popular uma classe com o resultado de uma query
21/06/2012 00:08
0
Oi, pessoal.

Gostaria de preencher minha entidade com valores vindos de uma outra entidade. Na verdade, de uma query. Por exemplo:

def d = DetalheVendas.createCriteria()
def historico = d.list {
projections {
groupProperty("categoriaProduto", "categ")
groupProperty("dataVenda", "data")
sum("valorDaVenda", "valor")
order("valor", "desc")
}
}

O código acima me retorna uma lista com a soma dos valores de venda e trazendo apenas os dados relevantes (essa classe tem vários atributos!). A idéia seria capturar esse resultado e inserir em uma outra entidade, chamada de "Histórico", que serviria para reduzir o tempo de espera do usuário quando quisesse fazer uma consulta com vendas e datas (que mais tarde eu poderia apresentar em um gráfico).

Segue abaixo a entidade que persiste os valores da query acima:

class HistoricoVendas {

String dataVenda
String categoriaProduto
BigDecimal valorDaVenda
}


Muito obrigado!

Tags: projections, inserir dados, criteria, popular tabela


1
Olá, Ronaldo.

Amigo, ainda não entendi 100% essas Criterias do GORM. Não sei se há maneira mais simples de fazer o que você quer, mas eu faria assim:
def d = DetalheVendas.createCriteria()
def historico = d.list {
projections {
groupProperty("categoriaProduto") // *
groupProperty("dataVenda")
sum("valorDaVenda")
order("valor", "desc")
}
}
def resultados = historico.collect {
new HistoricoVendas(dataVenda:it[0],categoriaProduto:it[1],valorDaVenda:it[2])
}

// * - // não vi motivo pra dar um "alias". Não fez diferença alguma, pois quando esses Crietria retornam uma lista de Arrays.


Já tentei user o ResultTransformer pra ver se não precisa desse "loop" mas não consegui. Acho que a documentação oficial está um tanto pobre nessa parte :(

Bem, pra mim isso rola. Tente ai. Boa sorte.


0
Obrigado Yoshiriro!! Funcionou perfeitamente!

Abraços :-)
21/06/2012 15:30



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