Página 1 de 1

Order By

MensagemEnviado: Ter Dez 20, 2011 2:20 pm
por barberino
Olá estou com um problema preciso ordenar uma tabelha utilizando 2 campos, o primeiro é o
Status(true ou false) e o segundo é o Nome(String), onde essa ordenação será necessaria para a
inicialização de um campo combo.

Fiz da seguinte forma, sobrescrevi o método findForCombo chamando uma consulta utilizando o ordey by, mas não funcionou. Segue o código

Método do Service
@Override
public List<Contrato> findForCombo(String... extraFields) {
return contratoDAO.buscaOrdedanaParaOS();
}

Método do DAO
public List<Contrato> buscaOrdedanaParaOS(){
return query().orderBy("encerrado") //boolean
.orderBy("campocombo") //String
.list();
}

Re: Order By

MensagemEnviado: Ter Dez 20, 2011 8:45 pm
por rogelgarcia
Olá barberino,

Para ordenar por dois campos, voce deve usar apenas um orderBy, exemplo:

.orderBy("campo1, campo2")

Você tem que verificar onde você deseja que essa ordenação aconteça.. talvez não seja o findForCombo que está sendo chamado, é interessante colocar um breakpoint e debugar para ver se é o método correto.


Você pode tentar anotar a sua classe de DAO com @OrderBy("campo1") e ver se a query que está chamando usa o @OrderBy (apenas queries criadas pelo next farão a leitura do @OrderBy, se a query for criada por você, voce terá que chamar o método orderBy explicitamente)

Re: Order By

MensagemEnviado: Qua Dez 21, 2011 9:26 am
por barberino
Olá,

Mais simples do que imaginava, coloquei @DefaultOrderBy especificando os campos na classe do DAO e funcionou, muito obrigado.

:D

Re: Order By

MensagemEnviado: Qua Dez 21, 2011 7:25 pm
por rogelgarcia
Beleza...

Acabei passando o nome errado da anotação... ainda bem que percebeu que era @DefaultOrderBy a anotação correta..

Até mais