最近要用Hibernate做一个枚举类型的映射,在MySQL数据库中,hibernate的map文件中如果不配置枚举类型属性的type,那么hibernate会默认的将Enum类型映射为TinyBlob类型,这样就很尴尬了,似乎要多耗费很多的资源,去网上找了一下,有很多种解决办法
- 如果用的是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
- }
- <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>
本文介绍如何在Hibernate中正确地映射枚举类型至数据库,避免默认的TinyBlob类型映射,通过XML配置使用EnumType来提高效率。

5771

被折叠的 条评论
为什么被折叠?



