[英]What's correct DB field data type of an Enum Java Type
我创建了这个枚举:
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;
}
}
并且我想将值保留在数据库中,我正在使用休眠作为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定义中添加什么?
最好的祝福
由于默认情况下,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()函数将其转换回数据库的整数。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.