Problemas com a paginação, quando utilizo o createCriteria() "IN"
30/01/2013 10:12
0
Olá Pessoal,

Estou tendo problemas com a paginação somente quando utilizo no createCriteria o "IN".

Método que monta a lista:

def filterByParamsAprov(Colaborador loggedUser, boolean isCtrlJhTrabAprov, Map params) {

def listaResponsabilidades = responsabilidades(loggedUser, params)

params.max = Math.min(params?.max?.toInteger()?:10,100)
params.offset = params?.offset?.toInteger()?:0
params.sort = params?.sort?params.sort:'id'
params.order = params?.order?params.order:'desc'
def listaFiltradaAprov = MgrCtrlJhTrab.createCriteria().list(
max:params.max,
offset:params.offset,
sort:params.sort,
order:params.order) {

'in'('id', listaResponsabilidades.id)
eq('idColaborador', loggedUser)

return listaFiltradaAprov
}


No método "listaResponsabilidades"(def listaResponsabilidades = responsabilidades(loggedUser, params)) eu retorno uma lista contendo todas as responsabilidades do colaborador.

No createCriteria() se eu uso somente o critério "eq('idColaborador', loggedUser)", eu consigo paginar sem problemas.
Mas se uso somente o critério "'in'('id', listaResponsabilidades.id)", ele traz a quantidade correta de registros e abre o list.gsp no browser:

http://localhost:8080/xxxxx/list?max=10&offset=10&sort=id&order=desc&finalSemanaFeriadosInstanceTotal=24

mas se vou paginar, dá o erro:

Error 500: Executing action [list] of controller [com.inmetrics.ctrljhtrab.FinalSemanaFeriadosController]
caused exception: could not execute query
Servlet: grails
URI: /in-manager/grails/finalSemanaFeriados/list.dispatch
Exception Message: ORA-00936: missing expression
Caused by: ORA-00936: missing expression
Class: FinalSemanaFeriadosController
At Line: [14]
Code Snippet:

STACK TRACE
java.sql.SQLSyntaxErrorException: ORA-00936: missing expression
at oracle.jdbc.driver.T4CTTIoer.processError(T4CTTIoer.java:445)
at oracle.jdbc.driver.T4CTTIoer.processError(T4CTTIoer.java:396)
at oracle.jdbc.driver.T4C8Oall.processError(T4C8Oall.java:879)
at oracle.jdbc.driver.T4CTTIfun.receive(T4CTTIfun.java:450)
at oracle.jdbc.driver.T4CTTIfun.doRPC(T4CTTIfun.java:192)
at oracle.jdbc.driver.T4C8Oall.doOALL(T4C8Oall.java:531)
at oracle.jdbc.driver.T4CPreparedStatement.doOall8(T4CPreparedStatement.java:207)
at oracle.jdbc.driver.T4CPreparedStatement.executeForDescribe(T4CPreparedStatement.java:884)
at oracle.jdbc.driver.OracleStatement.executeMaybeDescribe(OracleStatement.java:1167)
at oracle.jdbc.driver.OracleStatement.doExecuteWithTimeout(OracleStatement.java:1289)
at oracle.jdbc.driver.OraclePreparedStatement.executeInternal(OraclePreparedStatement.java:3584)
at oracle.jdbc.driver.OraclePreparedStatement.executeQuery(OraclePreparedStatement.java:3628)
at oracle.jdbc.driver.OraclePreparedStatementWrapper.executeQuery(OraclePreparedStatementWrapper.java:1493)
at org.apache.commons.dbcp.DelegatingPreparedStatement.executeQuery(DelegatingPreparedStatement.java:96)
at org.apache.commons.dbcp.DelegatingPreparedStatement.executeQuery(DelegatingPreparedStatement.java:96)
at grails.orm.HibernateCriteriaBuilder.invokeMethod(HibernateCriteriaBuilder.java:1140)
at com.inmetrics.ctrljhtrab.CtrljhtrabService.filterByParamsAprov(CtrljhtrabService.groovy:108)
at com.inmetrics.ctrljhtrab.CtrljhtrabService$filterByParamsAprov.callCurrent(Unknown Source)
at com.inmetrics.ctrljhtrab.CtrljhtrabService.filteredList(CtrljhtrabService.groovy:89)
at com.inmetrics.ctrljhtrab.CtrljhtrabService$$FastClassByCGLIB$$151ba04.invoke(<generated>)
at net.sf.cglib.proxy.MethodProxy.invoke(MethodProxy.java:149)
at com.inmetrics.ctrljhtrab.CtrljhtrabService$$EnhancerByCGLIB$$8ee8a27c.filteredList(<generated>)
at com.inmetrics.ctrljhtrab.CtrljhtrabService$filteredList.call(Unknown Source)
at com.inmetrics.ctrljhtrab.FinalSemanaFeriadosController$_closure2.doCall(FinalSemanaFeriadosController.groovy:14)
at com.inmetrics.ctrljhtrab.FinalSemanaFeriadosController$_closure2.doCall(FinalSemanaFeriadosController.groovy)
at java.lang.Thread.run(Thread.java:662)

No list.gsp

<g:paginate controller="finalSemanaFeriados" total="${params.finalSemanaFeriadosInstanceTotal}" params="${params}" />


Alguém teria alguma idéia para ajudar?

Obrigado
Tags: Problemas com a paginação, quando utilizo o createCriteria() "IN"


2
Desculpe pessoal.

Consegui resolver.

No meu método "responsabilidades" eu estava passando esses parametros:

params.max = Math.min(params?.max?.toInteger()?:10,100)
params.offset = params?.offset?.toInteger()?:0
params.sort = params?.sort?params.sort:'id'
params.order = params?.order?params.order:'desc'


Como o meu método filterByParamsAprov que chama o responsabilidades já tinha esses parametros, ele dava erro na hora de paginar. Então retirei esses parametros.


def responsabilidades(Colaborador loggedUser, Map params) {

def listaFiltrada = VmgrResponsabColab.createCriteria().list() {

eq('chapaResp', loggedUser.getChapa())
eq('codColigadaResp', loggedUser.getCodColigada())
//eq('id', loggedUser.id)

}

return listaFiltrada
}


Paginação funcionou.

Abs,
....
30/01/2013 10:22


0
Olá Igor...
Aqui no site percebi alguns post seus sobre o LDAP e dentre eles há um sobre as regras e usuários que vc afirma ter conseguido resolver...
Preciso de ajuda...
To mexendo com o LDAP e preciso limitar o acesso de usuários através do Banco que eu criei e não tô conseguido...A autenticação tá ok...Mas qlq usuário pode ter acesso às páginas...
Será se vc poderia me ajudar???


Desde já agradeço,


Joanna de Cássia Valadares



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