grails hql um metodo que retone um Map
26/09/2014 18:11
0
Sou novo no grails e estou tentando criar um metodo que retorne um Map para ser utilizado depois.
aqui esta o codigo e o erro.
codigo:
public static Map listAtendimentos_TI(Long idRequisitante) throws Exception{
def atentimentos = Atendimento.executeQuery("SELECT DISTINCT ate_id,ate_abertura,ate_situacao_id " +
" FROM ate_atendimento " +
" where ate_requisitante_id = "+ idRequisitante +
" ORDER BY ate_abertura DESC LIMIT 5");
return atentimentos ;
}
erro:
Error |
2014-09-26 18:01:04,084 [http-bio-8443-exec-9] ERROR errors.GrailsExceptionResolver - QuerySyntaxException occurred when processing request: [GET] /portal/atendimento_ti/listarChamados - parameters:
_: 1411765263828
ate_atendimento is not mapped [SELECT DISTINCT ate_id,ate_abertura,ate_situacao_id FROM ate_atendimento where ate_requisitante_id = 2215785101 ORDER BY ate_abertura DESC LIMIT 5]. Stacktrace follows:
Message: ate_atendimento is not mapped [SELECT DISTINCT ate_id,ate_abertura,ate_situacao_id FROM ate_atendimento where ate_requisitante_id = 2215785101 ORDER BY ate_abertura DESC LIMIT 5]
Line | Method
->> 107 | listAtendimentos_TI in atendimento.Atendimento_tiService
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
| 165 | doCall in atendimento.Atendimento_tiController$_closure3
| 195 | doFilter . . . . . in grails.plugin.cache.web.filter.PageFragmentCachingFilter
| 63 | doFilter in grails.plugin.cache.web.filter.AbstractFilter
| 1145 | runWorker . . . . . in java.util.concurrent.ThreadPoolExecutor
| 615 | run in java.util.concurrent.ThreadPoolExecutor$Worker
^ 744 | run . . . . . . . . in java.lang.Thread

Desde ja obrigado pela ajuda.
Tags: Map;hql


0
Olá Edu, bem vindo ao Grails ;)
tente
"SELECT DISTINCT ate.id,ate.abertura,ate.situacaoId " +
" FROM Atendimento ate" +
" where ate.requisitanteId = "+ idRequisitante +
" ORDER BY ate.abertura DESC LIMIT 5"
Obs: supondo que sua domain se chame Atendimento e que os atributos id, abertura, situacaoId e requisitanteId estejam definidos nela.
26/09/2014 18:58


0
O domain se chama Atendimento porem eu alterei o nome da tabela no banco com o método mapping para ate_atendimento e também o nome dos atributos foram alterados para aqueles, e também testei aquele SELECT no banco e funcionou. Essa diferença de nomes tem alguma relação, por não posso alterar o nome da tabela no banco?
Desde já obrigado, vou postar o código novamente.
Codigo:
public static Map listAtendimentos_TI(Long idRequisitante) throws Exception{
def atentimentos = Atendimento.executeQuery("SELECT DISTINCT ate_id,ate_abertura,ate_situacao_id " +
" FROM ate_atendimento " +
" where ate_requisitante_id = "+ idRequisitante +
" ORDER BY ate_abertura DESC LIMIT 5");
return atentimentos ;
}


Erro:
Error |
2014-09-26 18:01:04,084 [http-bio-8443-exec-9] ERROR errors.GrailsExceptionResolver - QuerySyntaxException occurred when processing request: [GET] /portal/atendimento_ti/listarChamados - parameters:
_: 1411765263828
ate_atendimento is not mapped [SELECT DISTINCT ate_id,ate_abertura,ate_situacao_id FROM ate_atendimento where ate_requisitante_id = 2215785101 ORDER BY ate_abertura DESC LIMIT 5]. Stacktrace follows:
Message: ate_atendimento is not mapped [SELECT DISTINCT ate_id,ate_abertura,ate_situacao_id FROM ate_atendimento where ate_requisitante_id = 2215785101 ORDER BY ate_abertura DESC LIMIT 5]
Line | Method
->> 107 | listAtendimentos_TI in atendimento.Atendimento_tiService
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
| 165 | doCall in atendimento.Atendimento_tiController$_closure3
| 195 | doFilter . . . . . in grails.plugin.cache.web.filter.PageFragmentCachingFilter
| 63 | doFilter in grails.plugin.cache.web.filter.AbstractFilter
| 1145 | runWorker . . . . . in java.util.concurrent.ThreadPoolExecutor
| 615 | run in java.util.concurrent.ThreadPoolExecutor$Worker
^ 744 | run . . . . . . . . in java.lang.Thread
27/09/2014 08:28


0
Resposta:
@Transactional(readOnly = true)
public MyNegocioCRUDRetorno listAtendimentos_TI(Long idRequisitante){
MyNegocioCRUDRetorno oRetorno = new MyNegocioCRUDRetorno(data: []);
oRetorno.data = Atendimento_ti.findAll(" FROM Atendimento ate where ate.requisitante = "+idRequisitante+" ORDER BY ate.abertura DESC",[max: 5]);
oRetorno.status = (oRetorno.data != null);
if (oRetorno.status) {
oRetorno.data.each {atendimento_ti ->
dataAcima24Horas(atendimento_ti);
}
return oRetorno;
}
return null;
}
17/10/2014 16:40



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