Usando Enum

4 respostas
M

Pessoal, seguindo o raciocínio de alguns colegas, decidi usar ENUM, mas não to entendendo muito bem!!! Valor lá…

1º criei meu ENUM:

public enum Operacao {

	C("Cadastrar"),
	V("Vistar"),
	A("Aprovar");
	
	private String operacao_workflow;
	
	private Operacao(String operacao_workflow){
		this.operacao_workflow = operacao_workflow;
	}
	
	public String getOperacao_workflow(){
		return operacao_workflow;
	}
	
}

Depois na minha Entidade, coloquei o campo assim:

@Enumerated(EnumType.ORDINAL)
private Operacao operacao;

public Operacao getOperacao() {
	return operacao;
}
public void setOperacao(Operacao operacao) {
	this.operacao = operacao;
}

Mas, ao listar (Tô Usando HIBERNATE), continua aparecendo C, V, A. Está faltando eu fazer alguma coisa ??

Valew.

4 Respostas

RaulCarlin

Ele está utilizando o toString() do Enum, que retorna o nome dele (no seu caso, C, V…).

Chame o método getOperacao_workflow() do enum no getOperacao() da sua entidade.

Eu camelei pra fazer um enum legal com String e acabei desistindo do “enum” e criei uma classe que achei de exemplo na net.

Ficaria algo do tipo:

public final class Operacao {

  public static final Operacao C = new Operacao("Cadastrar");

  private String operacao;

  private Operacao(String operacao) {
    this.operacao = operacao;
  }

  public String toString() {
    return operacao;
  }

}
M

Raul, vc não teria um exemplo completo usando desta forma que vc fez ? Pq até entendi sua classe, mas como chamar ela na minha lógica ?

Valew.

cassio
RaulCarlin:
Ele está utilizando o toString() do Enum, que retorna o nome dele (no seu caso, C, V...).

Chame o método getOperacao_workflow() do enum no getOperacao() da sua entidade.

Eu camelei pra fazer um enum legal com String e acabei desistindo do "enum" e criei uma classe que achei de exemplo na net.

Ficaria algo do tipo:

public final class Operacao {

  public static final Operacao C = new Operacao("Cadastrar");

  private String operacao;

  private Operacao(String operacao) {
    this.operacao = operacao;
  }

  public String toString() {
    return operacao;
  }

}

Ué, e qual o problema de sobrescrever o toString() para que ele imprima a String privada operacao_workflow; do nosso amigo ?

RaulCarlin

Realmente Cassio, basta sobreescrever…

Não sei se to louco, mas quando tentei isto, eu tinha que chamar explicitamente o toString() do enum se não ele sempre chamava o não-sobreescrito retornando o nome do enum, devo ter feito algo errado…

Assim funciona perfeitamente Marcelo:

public enum Operacao {
		 
		 	C("Cadastrar"),
		 	V("Vistar"),
		 	A("Aprovar");
		 	
		 	private String operacao_workflow;
		 	
		 	private Operacao(String operacao_workflow){
		 		this.operacao_workflow = operacao_workflow;
		 	}
		 	
		 	public String toString() {
		 		return operacao_workflow;
		 	}
		 	
		 }
Criado 31 de maio de 2007
Ultima resposta 1 de jun. de 2007
Respostas 4
Participantes 3