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

  • 相关阅读:
    70. 爬楼梯
    278. 第一个错误的版本
    88. 合并两个有序数组
    C++string与int的相互转换(使用C++11)
    108. 将有序数组转换为二叉搜索树
    102. 二叉树的层次遍历
    101. 对称二叉树
    98. 验证二叉搜索树
    ServletContext对象
    ServletConfig对象
  • 原文地址:https://www.cnblogs.com/fengyexjtu/p/5123124.html
Copyright © 2011-2022 走看看