Para realizarmos o mapeamento de um atributo “Enumerated type” de uma entidade podemos utilizar a annotation @Enumerated da JPA / Hibernate. O código abaixo é um exemplo de um enum:
public enum Sexo {
M("Masculino"),
F("Feminino");
private String descricao;
private Sexo(String descricao) {
this.descricao = descricao;
}
public String getDescricao() {
return descricao;
}
}
Abaixo o código da entidade:
@Entity
public class Pessoa {
//...
@Enumerated(EnumType.STRING)
@Column(name = "sexo", nullable = false, length = 1, columnDefinition="char(1)")
private Sexo sexo;
//...
}
Para sua utilização na classe Pessoa adicionamos a annotation @Enumerated com o parâmetro EnumType.STRING. Isso foi feito neste exemplo com o objetivo de gravar o valor em uma coluna do tipo “char(1)” no banco de dados. Por padrão, esse valor é EnumType.ORDINAL fazendo com que o atributo enum seja salvo em um “int”.