NutzCN Logo
问答 在bean中使用枚举类型,需要怎么声明?
发布于 2866天前 作者 玩家19 2185 次浏览 复制 上一个帖子 下一个帖子
标签:

比如我定义了一个枚举类型OrderType,定义了一个实体Order,


@Table("user_order") public class Order { @Column("trans_type") @ColDefine(type=ColType.INT) private OrderType transType;//线上/线下 public OrderType getTransType() { return transType; } public void setTransType(OrderType transType) { this.transType = transType; } }

还需要其他的什么注解么?

8 回复

默认映射成字符串, 如果数据库里面是int的话,加上

@ColDefine(type=ColType.INT)

不是字符串和int的问题,我这样写完输出的结果和数据库不对呀,数据库里的值是1,输出的结果是2,
数据库的值修改为2的时候会报错Can NO find enum value in [com.mfs.common.enums.OrderType] by int value '2'

public enum OrderType implements ByteEnum{
	ONLINE(1,"线上虚拟"),
	OFFLINE(2,"线下实物");
	
	private final byte dbValue;
	private String desc;
	
	private OrderType(int dbValue,String desc)
	{
		this.dbValue = (byte)dbValue;
		this.desc = desc;
	}
	
	@Override
	public byte getDbValue() {
		return this.dbValue;
	}

	public String getDesc() {
		return desc;
	}
	
	@Override
	public String toString() {
		return desc;
	}
}

按顺序的排列的, 并不能自定义具体的值

枚举的内部顺序

呃,并没有理解......

读不了dbValue的, 你要是这样用的话, 加个 ONLINE(0,"占位符"),

我重写了一下bean,貌似可以这样用了

@Column("trans_type")
@ColDefine(type=ColType.INT)
private OrderType transType;
public OrderType getTransType() {
	return transType;
}

public void setTransType(int transType) {
	this.transType = OrderType.getInstance(transType);
}
添加回复
请先登陆
回到顶部