当前位置: 首页 > news >正文

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

转载于:https://www.cnblogs.com/fengyexjtu/p/5123124.html

相关文章:

  • 如果一个按钮被覆盖如何响应?
  • SEO优化的黑帽手法是否值得使用?
  • json.net处理复杂json
  • 各种***批处理
  • 链表 UVA 11988 Broken Keyboard (a.k.a. Beiju Text)
  • 综合力矩分解算法
  • cocos2dx3.2升级Android5的坑
  • 进程与线程的区别
  • ubuntu14.04 qq安装
  • LDAP Account Manager 4.0 发布
  • [python]tkinker的GUI应用执行耗时长的任务
  • 与走在创业路上的学子交流——记网维“海大快点”创业团队
  • 以一个小例子作为自学XML的成果
  • 第七章 ReentrantLock总结
  • 托管执行和公共语言基础结构
  • [笔记] php常见简单功能及函数
  • 【每日笔记】【Go学习笔记】2019-01-10 codis proxy处理流程
  • export和import的用法总结
  • java8 Stream Pipelines 浅析
  • javascript面向对象之创建对象
  • Quartz初级教程
  • Shadow DOM 内部构造及如何构建独立组件
  • webpack项目中使用grunt监听文件变动自动打包编译
  • Web标准制定过程
  • 彻底搞懂浏览器Event-loop
  • 大数据与云计算学习:数据分析(二)
  • 复习Javascript专题(四):js中的深浅拷贝
  • 前端 CSS : 5# 纯 CSS 实现24小时超市
  • 一天一个设计模式之JS实现——适配器模式
  • 用简单代码看卷积组块发展
  • 远离DoS攻击 Windows Server 2016发布DNS政策
  • 2017年360最后一道编程题
  • #if #elif #endif
  • (1)(1.11) SiK Radio v2(一)
  • (26)4.7 字符函数和字符串函数
  • (Mac上)使用Python进行matplotlib 画图时,中文显示不出来
  • (二)fiber的基本认识
  • (非本人原创)史记·柴静列传(r4笔记第65天)
  • (附源码)spring boot公选课在线选课系统 毕业设计 142011
  • (解决办法)ASP.NET导出Excel,打开时提示“您尝试打开文件'XXX.xls'的格式与文件扩展名指定文件不一致
  • (六)库存超卖案例实战——使用mysql分布式锁解决“超卖”问题
  • (论文阅读32/100)Flowing convnets for human pose estimation in videos
  • (三)Honghu Cloud云架构一定时调度平台
  • (转)MVC3 类型“System.Web.Mvc.ModelClientValidationRule”同时存在
  • ***详解账号泄露:全球约1亿用户已泄露
  • .bat批处理(十):从路径字符串中截取盘符、文件名、后缀名等信息
  • .Net Framework 4.x 程序到底运行在哪个 CLR 版本之上
  • .NET 使用 XPath 来读写 XML 文件
  • .net 重复调用webservice_Java RMI 远程调用详解,优劣势说明
  • .NET/C# 使用反射注册事件
  • .NET/C# 在代码中测量代码执行耗时的建议(比较系统性能计数器和系统时间)...
  • .NET版Word处理控件Aspose.words功能演示:在ASP.NET MVC中创建MS Word编辑器
  • .NET设计模式(2):单件模式(Singleton Pattern)
  • .project文件
  • @Autowired 与@Resource的区别