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

  • 相关阅读:
    对象进行比较
    java中length,length(),size()区别
    引用数据类型、自定义类
    java方法
    学员信息管理系统案例
    商品库存管理查看增减
    引用数据类型Scanner,Random
    Cantor表巧妙的做法
    UVA 11292 The dragon of Loowater勇士斗恶龙 11729 突击战 Commando War
    期末,祝不挂
  • 原文地址:https://www.cnblogs.com/fengyexjtu/p/5123124.html
Copyright © 2011-2022 走看看