SpringBoot MyBatis Plus框架枚举类型转换到mysql类型报错,仅支持MySQL**的类型默认转换问题
2023-12-28 10:18:14
问题
问题的原因就是,我定义一个两个参数的枚举类型,用于区分素材的类型:
public enum ResType {
IMAGE(0,"图片"),
VIDEO(1,"视频"),
UNKNOWN(2,"未知");
private int value;
private String des;
ResType(int value, String des) {
this.value = value;
this.des = des;
}
public int getValue() {
return value;
}
public String getDes() {
return des;
}
}
项目采用Springboot + mybatis-plus框架来实现,有这个资源的实体类entity(Resource):
@Data
@EqualsAndHashCode(callSuper = false)
@TableName(value = "resource")
@TableComment("素材数据")
@ApiModel(value = "素材数据")
public class Resource {
@ApiModelProperty(value = "素材名称")
@Column(comment = "素材名称", length = 50)
private String name;
@ApiModelProperty(value = "素材类型")
@Column(comment = "素材类型")
private ResType resType;
@ApiModelProperty(value = "素材地址")
@Column(comment = "素材地址", length = 200)
private String url;
}
按理说运行工程后,新增的实体类会根据注解内容进行构建数据库的表,不过在构建表的时候就报错了。
报错内容如下:
表:resource,初始化字段结构失败! 字段名:resType不支持class
com.***.enums.ResType类型转换到mysql类型,仅支持JavaToMysqlType类中的类型默认转换,异常抛出!
也就是说这里的ResType类型的枚举是没法作为表内字段的转换类型。
解决办法
修改Resource数据实体的Column使其指定为MySqlTypeConstant的类型,这里可以INT也可以TEXT
@ApiModelProperty(value = "素材类型")
@Column(type = MySqlTypeConstant.INT, comment = "素材类型")
private ResType resType;
这样会将ResType 的value值转换成自已定义的type(这里是MySqlTypeConstant.TEXT)存入数据库内。
因为这里枚举只需要简单处理,看到有更灵活的方式就是自定义的枚举处理转换器。后续研究一下再实现吧。
文章来源:https://blog.csdn.net/qq_33789001/article/details/135240112
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。 如若内容造成侵权/违法违规/事实不符,请联系我的编程经验分享网邮箱:veading@qq.com进行投诉反馈,一经查实,立即删除!
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。 如若内容造成侵权/违法违规/事实不符,请联系我的编程经验分享网邮箱:veading@qq.com进行投诉反馈,一经查实,立即删除!