Hibernate将Enum枚举类型映射为Int类型(补充VARCHAR类型配置)
2012-04-17 22:59
465 查看
最近要用Hibernate做一个枚举类型的映射,在MySQL数据库中,hibernate的map文件中如果不配置枚举类型属性的type,那么hibernate会默认的将Enum类型映射为TinyBlob类型,这样就很尴尬了,似乎要多耗费很多的资源,去网上找了一下,有很多种解决办法
如果用的是annotation那么用@Enumerated(EnumType.STRING)直接可以映射为String类型
如果采用XML配置就没这么简单了,网上最多的方法是利用Hibernate提供的UserType但这样并不是最好的解决办法,还有一种更好的办法
映射为int类型配置如下:
原文地址:http://blog.csdn.net/G_beginner/article/details/6579582
映射为VARCHAR类型配置如下(其中type=12,12是java.sql.Type中定义的Type.VARCHAR对应的整形值, 默认配置是4,也即Type.INTEGER类型):
注:type=12,默认保存到数据库中的是enum类型的具体类型名称,
也就是,如果new MyClass().setStatus(Status.BUSY); 那么实际保存的是字符串值"BUSY",而Status.AVAILABLE,则保存的字符串是:"AVAILABLE"。
如果用的是annotation那么用@Enumerated(EnumType.STRING)直接可以映射为String类型
如果采用XML配置就没这么简单了,网上最多的方法是利用Hibernate提供的UserType但这样并不是最好的解决办法,还有一种更好的办法
package com.igalia.enumerates; public enum Status { BUSY, AVAILABLE; } package com.igalia.entities; class MyClass { private Status status; //getter and setter }
映射为int类型配置如下:
<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>
原文地址:http://blog.csdn.net/G_beginner/article/details/6579582
映射为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"。
相关文章推荐
- Hibernate将Enum枚举类型映射为Int类型
- hibernate将enum映射成int或varchar类型
- Hibernate中枚举Enum类型的映射策略
- Hibernate--Enum类型的set集合映射到数据库(xml配置文件实现方式)
- Hibernate 映射枚举(Enum) 类型的属性
- Hibernate中枚举Enum类型的映射策略
- * hibernate3 自定义枚举映射类型
- hibernate映射文件??.hbm.xml配置映射元素详解--Hibernate映射类型
- hibernate第一天——分页显示,数字类型互相转换intvalue(crl+h),hibernate的配置与API,建立表结构,final类型,映射文件,主键
- hibernate配置enum枚举属性
- Hibernate配置文件映射java数据基本类型
- 使用Hibernate的XML配置来映射枚举类型,存储自定义类型数据
- enum类型映射到hbm.xml配置文件
- 'Hibernate 完全手册' 读书笔记(二) 初识、体系、对象标识符、配置、映射类型
- JDK5.0新特性:枚举类型enum、枚举集合EnumSet、枚举映射EnumMap
- hibernate映射文件 xx.hbm.xml配置映射元素详解--Hibernate映射类型
- enum枚举与int string类型之间的相互转换
- Item 30 用enum代替int常量类型枚举,string常量类型枚举
- Hibernate枚举类型数据库映射方案
- Hibernate在配置表映射文件时cascade的类型及意义