hibernate enum映射详解

在这里介绍注解的形式,如果想要了解XML配置的方式,可以自行查找相关资料。

例如以下Entity

@Entity
@Table(name = "t_user")
public class User implements Serializable {
/**
*
*/
private static final long serialVersionUID = -9042615274714038279L; @Id
@GeneratedValue(strategy = GenerationType.AUTO)
private Long id; @Column(name = "name")
private String name; @Column(name = "password")
private String password; @Column(name = "age")
private Integer age; @Column(name = "gender")
//@Convert(converter = Genderconverter.class) //属性类型转换器,该配置映射到数据库后是自定的类型,例如保存性别是保存M/F,男/女
//@Enumerated(EnumType.ORDINAL) //该配置映射保存到数据库后保存的是序号,从0开始
//@Enumerated(EnumType.STRING) //该配置映射保存到数据后保存的String类型,例如MALE/FEMALE等
private Gender gender; public Long getId() {
return id;
} public void setId(Long id) {
this.id = id;
} public String getName() {
return name;
} public void setName(String name) {
this.name = name == null ? null : name.trim();
} public String getPassword() {
return password;
} public void setPassword(String password) {
this.password = password == null ? null : password.trim();
} public Integer getAge() {
return age;
} public void setAge(Integer age) {
this.age = age;
} public Gender getGender() {
return gender;
} public void setGender(Gender gender) {
this.gender = gender;
} @Override
public String toString() {
return "User[id=" + id + ", name=" + name + ",age=" + age + ", gender=" + gender + "]";
}
}

Gender

/**
* 性别
* @author daniel.zhao
*
*/
public enum Gender { MALE("M"),
FEMALE("F"); private String code; private Gender(String code) {
this.code = code;
} public String getCode() {
return code;
} public void setCode(String code) {
this.code = code;
} public static Gender fromString(String code) {
Objects.requireNonNull(code, "Gender code must not be null!");
if (Gender.MALE.code.equals(code)) {
return Gender.MALE;
}
if (Gender.FEMALE.code.equals(code)) {
return Gender.FEMALE;
}
return null;
}
}

GenderConverter

@Converter
public class Genderconverter implements AttributeConverter<Gender, String> { @Override
public String convertToDatabaseColumn(Gender attribute) {
return attribute.getCode();
} @Override
public Gender convertToEntityAttribute(String dbData) {
return Gender.fromString(dbData);
} }

使用以上方法可以映射保存对应的枚举类型到数据表中。

最新文章

  1. TThread.CreateAnonymousThread() 匿名线程对象的应用
  2. jq的$()里面 一定要是字符串类型!!!!!!!!!!!!!!!!!!!!!!!!
  3. STM32F103之DMA
  4. AJAX-----09iframe模拟ajax文件上传效果原理1
  5. 学习RSA公开密钥算法
  6. lucene 使用注意
  7. 用vi写一个C 程序
  8. Oracle procedure 基本语法
  9. 【原创】Android开发之ADB及ADB SHELl命令的应用
  10. Tomcat6+nginx集群,达到负载均衡和session复制
  11. 安装Jenkins后 启动时失败的问题解决
  12. css首行缩进两个字符串
  13. a=&#39;1,2,3,4,5&#39;如何转换为[&#39;1&#39;,&#39;2&#39;,&#39;3&#39;,&#39;4&#39;,&#39;5&#39;]
  14. python学习第三个坑
  15. Visual Assist X 10.6.1830.0 常用快捷键
  16. map映照容器的使用
  17. RPC架构简单理解
  18. [BZOJ]4650: [Noi2016]优秀的拆分
  19. 遍历HashMap的四种方式
  20. Java读取Excel并与SqlServer库中的数据比较

热门文章

  1. 20145315 《Java程序设计》第八周学习总结
  2. windows系统中 利用kibana创建elasticsearch索引等操作
  3. K-Means 算法(Java)
  4. HDU 2457 DNA repair(AC自动机+DP)题解
  5. Python学习札记(三十三) 面向对象编程 Object Oriented Program 4
  6. vim 安装Vundle.vim
  7. Spark 数据倾斜调优
  8. Tornado源码分析 --- Redirect重定向
  9. bzoj1058: [ZJOI2007]报表统计 stl xjbg
  10. 个人知识管理系统Version1.0开发记录(05)