@Enumerated da JPA

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”.