Como paginar o retorno de uma consulta feita com o sess.createSQLQuery(query)
15/05/2012 20:37
0
http://www.grailsbrasil.com.br/post/show/1761
Para entender meu primeiro problema que foi resolvido.

A query é dinãmica porque não sei quantos campos virão na consulta.
Qdo clico na paginação me retorna os mesmos valores sempre...

Aguardo e obrigado.

Método que cria a sql a ser executada


String montaQuery( ArrayList campos) {

final String SELECT = " SELECT v1.agrupa_atribu, v1.inform_atribu AS " + campos.get(0)[1]
final String FROM = " FROM sis.tbvaloratri v1 "
final String JOIN = " JOIN sis.tbvaloratri v"
final String WHERE = " WHERE v1.id_atributo = " + campos.get(0)[0]
final String ORDERBY =" order by v1.id_atributo"
int tamanho = campos.size()
String query = ""
String selectAux = ""
String joinAux = ""
String andAux = ""

if (tamanho == 1){
query += SELECT + FROM + WHERE + ORDERBY
}else{
for(int i = 1; i < tamanho; i++){
selectAux += " , v"+(i+1) + ".inform_atribu AS " + campos.get(i)[1]
joinAux += JOIN + (i+1) + " ON v"+i+".agrupa_atribu = v"+(i+1)+".agrupa_atribu "
andAux += " AND v"+(i+1)+".id_atributo = " + campos.get(i)[0]
}
query += SELECT + selectAux + FROM + joinAux + WHERE + andAux //+ ORDERBY
}

return query
}



retorno da minha consulta


//Consulta feita por sql
consulta = sess.createSQLQuery(montaQuery(campos))
def dados = consulta.list()
if(!params.max) params.max = 10
params.totalPaginas = dados.size()

if(!tipoRegistro) {
flash.message = "TipoValorAtributo not found with id ${params.id}"
redirect(action:list)
}
else {
return [ campos:campos , dados:dados, tipoRegistro:tipoRegistro, params:params ]
}
Tags: sess.createSQLQuery(query)


0
Retorna sempre os mesmos dados mas o problema está ao mostrar os dados ou na consulta ?

Exemplo : Retorna dados suficientes para 3 páginas, porém quando eu tento clicar na página 2 aparecem os dados da página 1 novamente é isso ?
16/05/2012 12:18


0
Exatamente isso ...


0
Até consegui criar uma critéria para a consulta


/*def tipoAtributoList = tipoRegistro.atributos
def criteria = TipoValorAtributo.createCriteria()
def first = 0
params.totalPaginas = 0
def tipoValorAtributoList = []
if(params.offset != null) first = Integer.parseInt(params.offset)
tipoValorAtributoList = criteria {
if(tipoAtributoList != null && !tipoAtributoList.equals("")) 'in' ("tipoAtributo",tipoAtributoList)
firstResult(first)
//maxResults(10)
order('id')
}
params.totalPaginas = tipoValorAtributoList.size


Mas como vem 3 registros do mesmo grupo , não consigo exibir na tela no formato certo e nem paginar ....



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