[RESOLVIDO]Erro no deploy de NamedQuery com 'GROUP BY x DESC'
7 respostas
C
Charles
Boa tarde.
Criei uma namedquery, veja abaixo, mas qdo tento fazer o deploy do projeto dá erro. Meu ‘select’ roda tranquilamente no meu MySQL 5.1.47
@NamedQuery(name="Movimentacao.findAll",query="SELECT m FROM movimentacao m WHERE m.expediente.status = '1' GROUP BY m.expediente.id DESC ORDER BY m.id DESC")
mas quando vou fazer o deploy do projeto dá erro.
Se tiro 'DESC’endente do ‘GROUP BY’ a namedquery ñ acusa problema.
Alguém sabe me dizer oq fazer para corrigir este erro?
Nem sempre o que funciona em seu SGBD irá funcionar no Hibernate, pois o Hibernate utiliza o SQL Padrão e o seu SGBD poderá acrescentar algo mais.
C
Charles
Valeu pela resposta robertol.
Não tinha certeza se era alguma restrição do Hibernate, muito obrigado pela confrimação.
Por acaso vc tem alguma sugestão de solução simplificada para este “problema”?
Como a namedquery retorna uma lista de objetos ‘movimentacao’ sendo um dos membros um outro objeto, ‘expediente’ acho q resolver com ‘selects’ e ‘fors’ ñ tão eficiente.
Ah, jurava q o MySQL seguia o padrão W3C. :shock:
Muito obrigado.
[]'s
t++
robertol
Charles,
Não vejo sentido no uso do group by na sua query. Seria mais eficiente que você colocasse a cláusula do group by como sendo a primeira cláusula do order by.
C
Charles
robertol:
Charles,
Não vejo sentido no uso do group by na sua query. Seria mais eficiente que você colocasse a cláusula do group by como sendo a primeira cláusula do order by.
;)
O relacionamento entre a tabela expediente-movimento é 1-m e num determinado momento preciso de uma seleção contendo somente o último registro de movimento de cada expediente.
Se utilizo só ‘GROUP BY m.expediente’ ele pega o primeiro registro cadastrado daquele grupo, assim, o ‘GROUP BY m.expediente DESC’ me garante o último cadastrado.
Entendeu?
[]'s
t++
C
Charles
Baum, valeu pela ajuda e esclarecimento robertol =D
Como ñ deu pra fazer a namedquery como fazia diretamente no MySQL acabei usando a dica do linhadecodigo.