How do I persist the String of an Enumerator in the Database?

2

I have the following Enumerator:

public enum ETipoCasa{

     Propria,
     Alugada,
     Financiada,
     Cedida;

}

And I'm trying to persist in the bank the String of this enumerator as the example:

Casa casa = new Casa();
casa.setTipoCasa(ETipoCasa.Alugada);
casa.inserir();

I am using hibernate, it is writing to the database the ordinal of the enum (1), and I wanted to instead of the ordinal, write the String (Leased). How do I do this?

    
asked by anonymous 02.07.2015 / 17:23

2 answers

2

James , the ideal would really be:

public enum ETipoCasa {
    Propria,
    Alugada,
    Financiada,
    Cedida;
}

public class Casa
{
    @Enumerated(EnumType.STRING)
    @Column(name = "tipo_casa")
    private ETipoCasa tipoCasa;

    public void setTipoCasa(String tipoCasa)
    {
        this.tipoCasa = tipoCasa;
    }
}

public static void main(String[] args)
{
    Casa casa = new Casa();
    casa.setTipoCasa(ETipoCasa.Alugada);
    casa.inserir();
}

Alternative: Killing the dove with a bazooka

Override ENUM methods:

public enum ETipoCasa
{
    Propria ("Propria"),
    Alugada ("Alugada"),
    Financiada ("Financiada"),
    Cedida ("Cedida");

    private final String tipo_casa;

    private ETipoCasa(String s) {
        tipo_casa = s;
    }

    public boolean equalsName(String outroTipo)
    {
        return (outroTipo == null)? false : tipo_casa.equals(outroTipo);
    }

    public String toString()
    {
        return tipo_casa;
    }
}

public static void main(String[] args)
{
    Casa casa = new Casa();
    casa.setTipoCasa(ETipoCasa.Alugada);
    casa.inserir();
}
    
02.07.2015 / 18:14
2

Try the javax.persistence annotation on the attribute being written:

@Enumerated (EnumType.STRING)

    
02.07.2015 / 17:32