博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
hibernate将enum映射成int或varchar类型
阅读量:6510 次
发布时间:2019-06-24

本文共 1102 字,大约阅读时间需要 3 分钟。

hibernate将enum映射成int或varchar类型

1.如果用的是annotation那么用@Enumerated(EnumType.STRING)直接可以映射为String类型
2.如果采用XML配置就没这么简单了,网上最多的方法是利用Hibernate提供的UserType但这样并不是最好的解决办法,还有一种更好的办法

package com.igalia.enumerates;

public enum Status {
BUSY, AVAILABLE;
}

package com.igalia.entities;

class MyClass {
private Status status;
//getter and setter
}

<class name="MyClass">

<id name="id">
<generator class="native"/>
</id>
<property name="status">
<type name="org.hibernate.type.EnumType">
<param name="enumClass">com.igalia.enumerates.Status</param>
</type>
</property>
</class>

映射为VARCHAR类型配置如下(其中type=12,12是java.sql.Type中定义的Type.VARCHAR对应的整形值, 默认配置是4,也即Type.INTEGER类型):

<class name="MyClass">
<id name="id">
<generator class="native"/>
</id>
<property name="status">
<type name="org.hibernate.type.EnumType">
<param name="enumClass">com.igalia.enumerates.Status</param>
<param name="type">12</param>
</type>
</property>
</class>
注:type=12,默认保存到数据库中的是enum类型的具体类型名称,
也就是,如果new MyClass().setStatus(Status.BUSY); 那么实际保存的是字符串值"BUSY",而Status.AVAILABLE,则保存的字符串是:"AVAILABLE"。

转载于:https://www.cnblogs.com/fengyexjtu/p/5123124.html

你可能感兴趣的文章
Word产品需求文档,已经过时了【转】
查看>>
dtoj#4299. 图(graph)
查看>>
zabbix-3.4 触发器
查看>>
换用代理IP的Webbrowser方法
查看>>
【视频编解码·学习笔记】7. 熵编码算法:基础知识 & 哈夫曼编码
查看>>
MySql 查询表字段数
查看>>
Centos7安装编译安装zabbix2.219及mariadb-5.5.46
查看>>
怎么获得combobox的valueField值
查看>>
浅谈网络协议(四) IP的由来--DHCP与PXE
查看>>
jre与jdk的区别
查看>>
全景图的种类
查看>>
git 维护
查看>>
jfinal框架下使用c3P0连接池连接sql server 2008
查看>>
struts2中使用标签操作静态方法等
查看>>
熬夜写了一个小游戏,向SpaceX聊表敬意
查看>>
apache 开启 gzip 压缩服务
查看>>
python mysql
查看>>
开源 免费 java CMS - FreeCMS1.5-建站向导
查看>>
jquery 1.6以上版本 全选
查看>>
AppCan 学习
查看>>