Sunday, 15 September 2013

hibernate - What's correct DB field data type of an Enum Java Type -



hibernate - What's correct DB field data type of an Enum Java Type -

i have enum created:

public enum cicloenum { cl("ciclo largo"), cc("ciclo corto"), ci("ciclo intermedio"); private string descripcion; private cicloenum(string descripcion) { this.setdescripcion(descripcion); } public string getdescripcion() { homecoming descripcion; } public void setdescripcion(string descripcion) { this.descripcion = descripcion; } }

and want persist value in db, i'm using hibernate orm engine.

@entity @table(name="bloquecruzamiento") public class bloquecruzamiento { //... private cicloenum ciclo; //... /** * @return ciclo */ public cicloenum getciclo() { homecoming ciclo; } /** * @param ciclo ciclo set */ public void setciclo(cicloenum ciclo) { this.ciclo = ciclo; }

the question is, want field in database numeric, no big deal if creates varchar. how can accomplish goal field in database created int(2)? need add together enum definition?

best regards

since default, values of enums in java ordinal, can set them array manner. alter convert enum integer value. alter made enum class add together function so:

public enum cicloenum { cl("ciclo largo"), cc("ciclo corto"), ci("ciclo intermedio"); private string descripcion; private cicloenum(string descripcion) { this.setdescripcion(descripcion); } public string getdescripcion() { homecoming descripcion; } public void setdescripcion(string descripcion) { this.descripcion = descripcion; } public int tointfordatabase() { switch (this) { case cl: homecoming 0; case cc: homecoming 1; case ci: homecoming 2; } homecoming -1; } }

then, can set enum calling myenum.values()[x] myenum name of enum, , x value of integer represent. example, cl 0, cc 1, ci 2. illustration test wrote is:

public static void main(string[] args) throws exception { int = 1; cicloenum ce = cicloenum.values()[i]; system.out.println(ce.getdescripcion()); system.out.println(ce.tointfordatabase()); }

this sets enum based on integer "i" (the value database), , converts integer database using tointfordatabase() function.

java hibernate enums

No comments:

Post a Comment