HQL, Criteria ou consulta em grails
16/11/2014 09:34
0
Olá, bom dia!

Estou estudando Grails e tenho muita dificuldade, pois sempre trabalhei com php.

Mas já vi que é muito melhor trabalhar com Grails, criei um novo projeto e consegui listar dados de um banco de dados local, até ai legal, neste projeto, está sendo listado dados de duas tabelas, o que pra mim é um avanço enorme.

Porém já a uns três dias estou tentando listar por categoria, colocar uma condição, porém não consigo.

Meu código:

class AnuncioController {

def index() {

def lista = Anuncio.list()

render(view:"/anuncio/index", model: [anuncios: lista])
}

}

Dentro de da view index:

<div id="divLista">
<g:render template="lista" model="[anuncios: anuncios]"></g:render>
</div>

Eu tentei usando criteria no anunciocontroller e hql mas não deu certo, verdade mesmo é que não sei como fazer.

Tenho uma tabela que se chama Anuncio e uma que chama Categoria, eu quero listar os anuncios por Categoria.

Alguem pode dar uma idéia de como fazer isso?

Obrigado!
Tags: HQL, Criteria, Grails


0
se você colocar um println depois do método list() o que ta imprimindo?

def lista = Anuncio.list()
println lista // que ta imprimindo aqui??
16/11/2014 10:15


0
Não imprime nada, porém está em um controller que leva para uma index que tem um template que mostra os detalhes corretamente do banco através de um g:each.

O que não to conseguindo é usar algum critério na busca do banco, quero listar por apenas categorias, por exemplo, se quiser da categoria eletrônicos, ou da categorias vestuário.

Isso que não consigo fazer. Tem idéia de como é feito? Seria dentro do g:each mesmo ou no controller, acho que por ser MVC deveria ser no controller certo!
16/11/2014 22:12


0
Você pode usar Criteria da uma olhada neste post do Kiko: http://www.itexto.net/devkico/?p=885
17/11/2014 08:23


0
Olá Flávio,
listar todos anúncios por categoria usando HQL:

def results = Anuncio.executeQuery('select an.atributo1, an.atributoN from Anuncio as an group by an.categoria')

Listar todos anuncios de uma categoria específica:

Anuncio.findByCategoria(categoriaInstance)

Ou se vc tiver apenas o id da categoria que deseja consultar:

def results = Anuncio.find("from Anuncio as an where an.categoria.id = ?", [id_da_categoria_desejada])

mais informações sobre executeQuery aqui
mais informações sobre find aqui
Como não conheço suas Domains coloquei os nomes apenas como exemplo e vc substitui pelo que lhe for conveniente.
17/11/2014 09:20


0
Pessoal, valeu as dicas, somente hoje consegui, ficou assim:

class AnuncioController {

def index() {

def lista = Anuncio.list()

def listaCategorias = Categoria.list()

render(view:"/anuncio/index", model: [anuncios: lista,categorias: listaCategorias])
}

def busca() {

def lista = []

if (params.id){

lista = Anuncio.createCriteria().list{

categoria {

eq("id",params.id.toLong())

}
}
} else {

lista = Anuncio.list()
}
render(template:"/anuncio/lista", model: [anuncios: lista])
}

Valeu pela ajuda de quem pode ajudar, abraço e se puder, ajudarei também!
22/11/2014 11:17



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