Hibernate4.2 枚举映射问题
来源:互联网 发布:java同步synchronized 编辑:程序博客网 时间:2024/05/29 23:22
把以前的项目用Hibernate4.2 更新后出现了一系列问题。笔者是hibernate-release-4.2.2.Final版本
折腾时间最久的便是关于枚举映射问题。
在做了个Gender的枚举类之后,采用xml方式配置hbm文件:
<property name="gender" not-null="true" length="5"> <type name="org.hibernate.type.EnumType"> <!-- 12为java.sql.Types.VARCHAR常量值,即保存枚举的字面值到数据库。 如果不指定type参数,保存枚举的索引值(从0开始)到数据库--> <param name="type">12</param> <param name="useNamed">true</param> <param name="enumClass">cn.itcast.global.Gender</param> </type> </property>Hibernate生成的映射到数据库的代码如下:
Hibernate: create table Employee ( username varchar(20) not null, password varchar(20) not null, gender varchar(5) not null, primary key (username) )单元测试,保存一条数据到数据库(其中gender值为Gender.MALE, 枚举的Ordinal值为0),显示结果为gender=0;
网上找不到该版本的源代码,而之前版本的代码看过之后的确配置没问题的。无奈最终查看反编译代码,仔细比对后发现 EnumType类多了个静态常量: public static final java.lang.String NAMED = "useNamed";
在线查找之前版本(4.1.2final),该类的静态常量如下:
public static final String
CATALOG
"catalog"
public static final String
COLUMN
"column"
public static final String
ENUM
"enumClass"
public static final String
SCHEMA
"schema"
public static final String
TABLE
"table"
public static final String
TYPE
"type"
于是笔者在hbm文件里多加了条语句:
<type name="org.hibernate.type.EnumType"> <!-- 12为java.sql.Types.VARCHAR常量值,即保存枚举的字面值到数据库。 如果不指定type参数,保存枚举的索引值(从0开始)到数据库--> <param name="type">12</param> <!-- 指定是否gender值是否用枚举的Named还是ordinal,默认为false --> <param name="useNamed">true</param> <param name="enumClass">cn.itcast.global.Gender</param> </type> </property>
运行结果,gender=MALE;
各位找到了该版本源文件可以再看看。
- Hibernate4.2 枚举映射问题
- hibernate4组件映射
- Hibernate4继承映射
- Hibernate4组件映射
- Hibernate4关系映射总结
- Hibernate4-组合主键映射
- Hibernate4-集合映射
- Hibernate4.2 注解映射以及缓存培训教程及例子
- Hibernate4映射总结(2)——Annotation配置
- Hibernate4一对多关系映射
- hibernate4 映射集合属性List
- hibernate4 集合属性映射Array
- hibernate4 映射集合属性 set
- hibernate4 映射集合属性 bag
- hibernate4 映射集合属性Map
- hibernate4.x映射对象标识符
- Hibernate4-8 映射继承关系
- Hibernate4使用注解关系映射
- 我学到的一些关于编程的事儿(翻译)
- Beautiful Meadow zoj3213
- Java 组合和聚合关系
- UNIX环境高级编程——IPC总结
- 变态的ShowModelDialog 浏览器脚本兼容问题
- Hibernate4.2 枚举映射问题
- C++ exception类+异常何时会迷失方向
- sed 常用正则表达式
- Linux+Apache+C+MySQL CGI编程的一些总结
- CSS兼容性
- linux+apache+c的cgi总结2环境变量
- Mac OS Flash builder 4.7 破解方法 | 不用序列号
- Java 程序调用一个 C++ 类的方法
- WPF经典编程模式-MVVM示例讲解