@Enumerated注解指定的是序列化的时候取枚举的什么值
例子:
/**
* 账户状态.i_status
* 1-未激活 2-激活.
*/
@Getter
@Setter
@NotNull
@Comment("账户状态,1-未激活 2-激活")
@Column(name = "_status" , nullable = false)
@Enumerated(EnumType.STRING)
private State status = State.inactive;
/** 枚举:账号激活状态枚举
* 账户状态,1-未激活 2-激活
* */
public enum State {
inactive(1, "未激活"),
Activated(2, "已激活");
/** 值 */
private int value;
private String label;
/** 取值 */
public String getLabel() { return label; }
public int getValue() { return this.value; }
State(int value, String name) {
this.value = value;
this.label = name;
}
}
@Enumerated默认的value是ordinal,取的就是枚举的下标,下标就是 1, 2
此时数据库的数据类型需要是数值类型
@Enumerated(value=EnumType.STRING),取的就是枚举的名字,名字就是 未激活 , 已激活
此时数据库的数据类型需要是varchar那些字符串类型
简单说,就是保存到数据库到底是下标还是枚举名