目的:希望通过枚举,以String形式与数据库对应字段传递,遇到了一些报错,在网上的解决方法大多都解决不了


案发现场(一开始的写法):

报错:,查询的时候数据库的值识别不了,没法赋值给实体类

代码:

    /*** 设备标识.equipment*/@Getter@Setter@Size(max = 128)@NotNull@Comment("设备标识,")@Column(name = "equipment" , length = 128 , nullable = false)@Enumerated(EnumType.STRING)private EquipmentType equipment;
    /*** 枚举:服务器类型*  */public enum EquipmentType {/** 0-切片服务器 */SECTIONS(0, "切片服务器"),/** 1-其他服务器 */OTHER(1, "其他服务器");/** 值 */private Integer value;private String label;/** 取值 */public String getLabel() { return label; }public Integer getValue() { return this.value; }EquipmentType(Integer value, String label) {this.value = value;this.label = label;}}

分析:

误认为使用了@Enumerated(EnumType.STRING)注解,就相当于分配上面的 label(枚举第二个参数)与数据库交互,在这折腾了好久,其实并非这样


EnumType源码如下:

枚举类型默认是按他的索引跟数据库关联,也可以指定说他的 value(枚举第一个参数),即第一种ORDINAL(索引)。

第二种是以枚举的value值跟数据库关联,如上面的实体类的SECTION、OTHER

总结:

也就要么存的是它的索引,即ordinal,要么是value值,如SECTION、OTHER


于是枚举代码改成:

    /*** 枚举:服务器类型*  */public enum EquipmentType {/** 0-切片服务器 */切片服务器(0, "切片服务器"),/** 1-其他服务器 */其他服务器(1, "其他服务器");/** 值 */private Integer value;private String label;/** 取值 */public String getLabel() { return label; }public Integer getValue() { return this.value; }EquipmentType(Integer value, String label) {this.value = value;this.label = label;}}

这样实体类和数据库关联起来


遇到的报错: 

解决:去掉size的限定

    /*** 设备标识.equipment*/@Getter@Setter@NotNull@Comment("设备标识,")@Column(name = "equipment" , nullable = false)@Enumerated(EnumType.STRING)private EquipmentType equipment;

Hibernate 枚举类型@Enumerated(EnumType.STRING)的应用相关推荐

  1. C++_布尔类型、枚举类型

    布尔类型 ================================================== 布尔类型对象可以被赋予文字值true或false. 当表达式需要一个算术值的时候,布尔对 ...

  2. 枚举类型和各种类型之间转换

    //声明枚举public enum Sesons{春,夏,秋,冬}static void Main(string[] args){Sesons s = Sesons.春;string str=&quo ...

  3. enum枚举类型用法

    文章目录 1. 枚举类型和枚举变量 1.1 枚举类型的定义和声明 1.2 枚举变量的定义和声明 2. 枚举变量和枚举常量的关联对应 3. 枚举类型和变量的应用 3.1 作为判断语句中的逻辑 3.2 一 ...

  4. C#的枚举数(Enumerator)和可枚举类型(Enumerable)

    数组可以被foreach语句遍历数组中的元素,原因是数组可以按需提供一个叫做枚举数(enumerator)的对象.枚举数可以依次返回请求的数组的元素. 对于有枚举数的类型而言,必须有一个方法来获取它们 ...

  5. 浅析枚举类型(Enumerated types)

    枚举类型定义了一系列有序值的集合.枚举变量就是从这个既定的集合中取某个值.集合中的有序值可以称为元素,元素一般从0开始索引(也就是元素的顺序号). 定义一个枚举类型,采用以下的格式: type typ ...

  6. 运用String.format格式化方法和消息枚举类型创建消息模板

    package com.han.StringFormat;import java.util.Date;/*** 运用String.format格式化方法和消息枚举类型创建消息模板* * @author ...

  7. 《Java SE实战指南》06-08:枚举类型(Enumerated types)

    内容导航: 前言 1.定义 2.使用场景 3.高阶应用 前言 在现实场景中,我们发现某类事物包含的名称.范围和含义是有限的,都可以列举出来. 方向:北.南.东.西: 季节:春季.夏季.秋季.冬季: 月 ...

  8. Hibernate注解之@Enumerated

    @Enumerated(value=EnumType.ORDINAL)采用枚举类型的序号值与数据库进行交互, 此时数据库的数据类型需要是数值类型,例如在实际操作中 CatTest ct = new C ...

  9. thinking-in-java(19)枚举类型

    [0]开场白 1)关键字 enum 可以将一组具名的值的有限集合创建为一种新的类型,而这些具名的值可以作为常规的程序组件使用: 2)所有的枚举类都继承自 Enum,通过 enumClass.getSu ...

  10. 求你了,不要再在对外接口中使用枚举类型了!

    点击上方蓝色"方志朋",选择"设为星标" 回复"666"获取独家整理的学习资料! 最近,我们的线上环境出现了一个问题,线上代码在执行过程中抛 ...

最新文章

  1. Apache URL重定向避免网址结尾斜线问题
  2. 【ACM】【STL】stack应用
  3. 实现-驼峰和下划线的转换 工具类
  4. python动物代码大全_python爬虫代码大全
  5. python如何爬虫eps数据_Python爬虫常用的几种数据保存方式
  6. 4比较三个数的大小输出最大的值并从小到大排序输出
  7. OpenGL基础56:OpenGL简单调试
  8. solr中facet及facet.pivot理解
  9. SyncBird Pro的PhoneCare功能如何使用
  10. 谷歌在招什么样的人?
  11. 使用adb工具修改android分辨率
  12. 卸载office 2016 报错:错误1321
  13. 第1卦 乾为天(乾卦) 刚健中正 上上卦
  14. 速通C语言支线第一站 基础刷题
  15. python3 实现火车票查询 代码+知识点
  16. snprintf() 函数
  17. NB-IoT设备并发错峰及优化方法
  18. html 二级页面 教程,css 实现动态二级菜单
  19. Pytorch版本YOLOv3模型转Darknet weights模型然后转caffemodel再转wk模型在nnie上面推理
  20. POJ 2656 Unhappy Jinjin(水~)

热门文章

  1. ROS使用节点句柄nh(“~“)和nh的区别:发布的话题的命名空间不同
  2. 网络打印机 这台计算机上没有安装,Win7添加网络打印机时提示打印处理器不存在怎么办?...
  3. 《学习网站》计算机视觉领域的一些牛人博客,超有实力的研究机构等的网站链接
  4. js表单提交enter触发提交
  5. 某互联网大厂亿级大数据服务平台的建设和实践
  6. caj格式的文档怎么转成pdf格式呢?
  7. 无缘无故,谷歌浏览器主页被篡改为360导航,如何解决?
  8. 好未来表格识别大赛 | 获奖名单新鲜出炉!
  9. 小程序汉字转码以及倒计时
  10. ArcMap进行标记符号制作