zoukankan      html  css  js  c++  java
  • hibernate将enum映射成int或varchar类型

    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"。

  • 相关阅读:
    Hadoop Gateway 部署
    java 命令--备忘
    整理下常用硬件性能参数
    python 脚本备份 mysql 数据库到 OSS
    pip 更换国内源
    记录闭包和立即执行函数
    Django 中文乱码问题&富文本显示
    mysql exceeded the 'max_questions' resource 记录
    sql server 数据字典的妙用
    Sublime Text指南
  • 原文地址:https://www.cnblogs.com/fengyexjtu/p/5123124.html
Copyright © 2011-2022 走看看