Enum Ordinal/String

iae galera,

eu tenho uma enum que eu fiz assim:

public enum SimNao { 
 
    Sim, Não; 
     
}

ela ta mapeada assim :

@Column(name = "client") 
@Enumerated(EnumType.ORDINAL) 
private SimNao client;

quando eu faço um find no banco ele me faz os valores “SIM”/“NÃO” e eu precisava que fosse 0 e 1, o comportamento é esse mesmo? ou tem uma forma de trazer o 0 e 1?

http://tomee.apache.org/examples-trunk/jpa-enumerated/README.html

Se vc quer as Strings SIM /NAO vc usa EnumType.STRING, o .ORDINAL é pra 0, 1, 2…

Vai ser sempre uma dessas duas possibilidades SIM ou Não?

Já pensou em usar boolean?

então eu quero o 0 ,1 mas quando ele insere um dado ele fica com [ 0 , 1 ], e quando ele busca o dado no banco ele fica com [“Sim”,“Não”]

tem algo estranho ai.

pq isso é um tipo Enumerado com dois valores, Sim e Nao, ( 0 e 1 )

vc não vai trazer do banco as strings “Sim”/ “Nao”. vc vai trazer 0 e 1 e o hibernate gerar os objetos adequados.

o que talvez aconteça é vc tentar imprimir o objeto ou valor e aparecer Sim/Não pq isso é o “toString” do valor.

se vc quer o valor 0 ou 1 vc tem duas opções

  1. não use esta enumeração. torne esse campo inteiro

  2. use o campo .ordinal() para pegar o 0 ou 1 dessa enumeração

enum SimNao {
  Sim, Nao
}
public class A {
  public static void main (String args[]){
    System.out.println("string = " + SimNao.Sim + ", value " + SimNao.Sim.ordinal());
    System.out.println("string = " + SimNao.Nao + ", value " + SimNao.Nao.ordinal());
  }
}

output

string = Sim, value 0
string = Nao, value 1

1 curtida

obrigado ; )