java实体类中有枚举类型_Java实体类之---enum枚举类型属性

今天在项目中发现了一个实体类中有枚举类型的属性,并且在声明的时候加上了

@Enumerated(EnumType.STRING)

的注解。

930b1c7888c52d5d96d03fd3e957fd9f.png

同事在查询的时候发现报了错误,于是就百度了一下这个注解的意义,发现这个是hibernate的一个枚举注解。

Error attempting to get column 'level' from result set.  Cause: java.lang.IllegalArgumentException: No enum constant com.kylin.blitz.dao.enums.MemberLevel.5

org.mybatis.spring.MyBatisSystemException: nested exception is org.apache.ibatis.executor.result.ResultMapException:

@Enumerated(EnumType.STRING)

EnumType有两个属性,一个是STRING,一个是ORDINAL,当使用的是STRING的时候,数据库对应保存的是注解的名称

fe35963839ca3a3b34c0bf74a94277d1.png

当注解使用的是ORDINAL的时候,数据库对应保存的是注解的值

75779570646c3970ad890f1107ca12e7.png

aca5d0759ac2c38b5cc48d0a3f1160f4.png

229aa4743980b0a677ce0f2995f7969d.png

在这里写下记录一下,使用枚举类当做实体类对应数据库的时候,可以使用hibernate的注解@Enumerate进行映射,具体数据库保存的是枚举的名称还是枚举的值,则根据注解里面的EnumType来决定,STRING保存的是名称,ORDINAL保存的是值。

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: 在实体类中使用枚举类作为字段类型可以提高代码的可读性和可维护性。枚举类是一种特殊的数据类型,它可以将常量值组合在一起,类似于常量池。 假设我们有一个实体类`User`,其中有一个字段`gender`表示用户的性别,我们可以使用枚举类作为该字段的类型。例如: ``` public class User { private String name; private Gender gender; // ... } public enum Gender { MALE, FEMALE, UNKNOWN } ``` 这样,在使用`User`实体类时,我们可以直接访问`Gender`枚举类中定义的常量,如`Gender.MALE`、`Gender.FEMALE`等。这样可以保证代码的可读性,同时也可以减少代码中重复的字符串。 使用枚举类还可以提高代码的可维护性。当我们需要修改某个常量的值时,只需要修改枚举类中的定义,而不用在代码中搜索所有出现该常量的地方进行修改。 总之,在实体类中使用枚举类作为字段类型可以提高代码的可读性和可维护性,推荐使用。 ### 回答2: 在实体类中使用枚举类作为字段类型有以下几个优点: 1. 约束取值范围:枚举类可以定义一组固定的取值,限定了字段的可能取值范围,增加了代码的可读性和可维护性。例如,在表示性别的字段中,可以使用枚举类定义为`Gender`,其中包括`MALE`和`FEMALE`两种取值,避免使用数字或字符串表示,从而避免了潜在的数据错误。 2. 类型安全性:使用枚举类作为字段类型可以提高类型的安全性。编译器可以检查字段的取值是否合法,避免了在运行时由于传入非法的取值而导致的错误。例如,在表示星期的字段中,使用枚举类`Weekday`定义了`MONDAY`、`TUESDAY`等七个取值,编译器可以在编码阶段检查到传入了非法的取值。 3. 可读性和维护性:在代码编写和阅读过程中,使用枚举类可以增强代码的可读性和可维护性。通过定义枚举类,可以直观地了解字段的可能取值,更好地理解代码的含义。此外,如果需要修改字段的取值或者添加新的取值,在枚举类中进行修改和扩展就可以一次性地修改整个系统中相关的代码。 4. 数据一致性:使用枚举类作为字段类型可以确保数据的一致性。当系统中多个地方使用同一个字段时,如果使用枚举类,可以保证所有地方使用的是相同的取值,避免了因为使用了不同的字符串或者数字表示同一个含义导致的数据不一致。 需要注意的是,在使用枚举类作为字段类型时,应该根据实际需求来定义合适的枚举值,并注意枚举取值的顺序和命名的规范性,以提高代码的可读性和可维护性。另外,如果字段的取值较多或者需要频繁修改,可能考虑使用数据库表来存储取值,并在实体类中使用外键和关联表。 ### 回答3: 在实体类中使用枚举类作为字段类型可以提高代码的可读性和可维护性。 首先,使用枚举类可以明确字段的取值范围,限制了字段的取值只能在预定义的枚举值中选择,避免了错误的赋值。这样一来,在编写代码时就能够避免一些由于取值范围错误导致的bug,提高了代码的健壮性。 其次,枚举类可以为字段提供更加语义化的取值。通过给字段赋予预定义的枚举值,可以让代码的含义更加清晰明了。例如,对于一个状态字段,可以定义枚举值为"启用"和"禁用",这样就能直观地表示该字段的含义,提高了代码的可读性。 另外,使用枚举类还能避免使用魔法数字或者字符串的情况。在代码中直接使用数字或字符串来表示字段的取值,会增加代码的复杂性和维护难度。而使用枚举类,可以将这些取值定义在一个统一的位置,方便管理和修改。 总的来说,将枚举类作为实体类字段类型能够提高代码的可读性、可维护性和健壮性。这种方式能够明确字段的取值范围,提供更加清晰的代码含义,并且避免使用魔法数字或字符串,从而提高代码的可靠性和可维护性。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值