我创建了这个枚举:
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() {
return descripcion;
}
public void setDescripcion(String descripcion) {
this.descripcion = descripcion;
}
}
我希望在DB中保留该值,我将hibernate用作ORM引擎。
@Entity
@Table(name="bloquecruzamiento")
public class BloqueCruzamiento {
//...
private CicloEnum ciclo;
//...
/**
* @return the ciclo
*/
public CicloEnum getCiclo() {
return ciclo;
}
/**
* @param ciclo the ciclo to set
*/
public void setCiclo(CicloEnum ciclo) {
this.ciclo = ciclo;
}
问题是,我希望数据库中的字段是数字的,但如果它是创建为Varchar则没什么大不了的。 如何实现数据库中的字段创建为int(2)的目标?我需要将哪些内容添加到Enum定义中?
最好的问候
答案 0 :(得分:0)
因为默认情况下,Java中ENUMS的值是序数,所以可以使用类似数组的方式设置它们。唯一的变化是将此枚举转换回整数值。我对你的枚举类所做的更改是添加一个函数来执行此操作:
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() {
return descripcion;
}
public void setDescripcion(String descripcion) {
this.descripcion = descripcion;
}
public int toIntForDatabase() {
switch (this) {
case CL:
return 0;
case CC:
return 1;
case CI:
return 2;
}
return -1;
}
}
然后,您可以通过调用MyEnum.values()[x]来设置枚举,其中MyEnum是枚举的名称,x是它将表示的整数的值。例如,CL为0,CC为1,CI为2.我编写的示例测试是:
public static void main(String[] args) throws Exception {
int i = 1;
CicloEnum ce = CicloEnum.values()[i];
System.out.println(ce.getDescripcion());
System.out.println(ce.toIntForDatabase());
}
这基于一个整数来设置一个枚举" i" (来自数据库的值),然后使用toIntForDatabase()函数将其转换回数据库的整数。