Boa tarde galera,
É o seguinte, tenho o seguinte enum.
public enum StatusType implements Serializable {
ABERTO("ABERTO"),
EM_ANDAMENTO("EM_ANDAMENTO"),
CONCLUIDO("CONCLUIDO"),
CANCELADO("CANCELADO");
private String userType;
private StatusType(String userType) {
this.userType = userType;
}
@Override
public String toString() {
return this.userType;
}
}
E adiciono no banco de dados com @Enumerated(EnumType.STRING).
Problema é que quando eu retorno uma lista e boto na Query um “order by” o enum, ele ordena como se fosse String (ABERTO, CANCELADO, CONCLUIDO E EM ANDAMENTO).
O que gostaria de saber é se tem como ele ordenar pela ordem da enum?
Agradeço desde já.
Acho que tem jeito ñ.
Ou você salva como número no db, ou então você salva em um outro campo o valor numero e manda orderby nele.
Um outro modo mais gambiarra que eu imagino seria fazer um case sobre esse campo e mandar um order by nele.
É, o metodo vai ser salvar com Enumerated ORDINAL mesmo, criar outra coluna pra isso vai ser meio gambita mesmo, pelo menos na minha aplicação.
O “problema” vai ser mudar isso em produção, o que não é um problema real, só vai dar mais trabalho na hora de atualizar o sistema.
Valeu ai pela ajuda.
[quote=shadowzaum]É, o metodo vai ser salvar com Enumerated ORDINAL mesmo, criar outra coluna pra isso vai ser meio gambita mesmo, pelo menos na minha aplicação.
O “problema” vai ser mudar isso em produção, o que não é um problema real, só vai dar mais trabalho na hora de atualizar o sistema.
Valeu ai pela ajuda.[/quote]Uma coisa que você pode fazer e não influenciar no banco de dados é criar um comparator e depois de buscar os dados no DB ordenar a lista de acordo com o comparator. [=
Mas em questão de performance depois? Pois o sistema é um sistema de abertura de chamados e o numero de registros só tende a crescer. A maquina que ele ta instalado não é uma das melhores, até porque não precisa.
Mas o que eu realmente fico com medo é isso, questão de performance, porque vai ser uma area que os usuarios (tanto o pessoal do suporte, quanto clientes) vão estar usando direto.
Valeu pela ajuda ai de qualquer forma. =D