Hibernate 中的Enum

在这次的项目中model中某些类的状态使用的是枚举类型。可是当我保存的时候保存的全是枚举中的序列,通过查资料发现一种解决方案为:
枚举类型:
Hibernate和EJB3.0支持基本类型,但是hibernate 注解还支持内置的枚举类型映射到一个顺序列或一个字符串类型的列。默认是保存枚举类型的序列值,但是你可以通过@Enumerated注解来进行调整。
保存数据为字符串类型
@Enumerated(value=EnumType.STRING)

private DateStatus status;

保存数据库为数字类型
@Enumerated(value=EnumType.ORDINAL)

其它需要注意的地方::
时间类型:
在和姓java API中 并没有定义时间精度,因此处理时间数据时,你需要定义将其存储在数据库中所预期的精度,在数据库中表示时间的数据有DATE,TIME和TIMESTAMP 三种精度(单纯的日期,时间或者两种兼容),可以使用@Temporal注解来调整精度。
默认为TIMESTAMP 类型,常用的类型为Date
/**
* 起始时间
*/
@Temporal(TemporalType.DATE)
private Date startDate;

大数据类型:
@Lob注解表示属性将被持久化为Blob或者Clob,具体取决于属性的类型,java.sql.Clob,char[] ,Character[]和String 这些类型都为Clob类型。而java.sql.Blob,byte[],Byte[]和serializable类型被持久化为Blob类型。


如果某个属性实现了java.io.Serializable同时不是基本数据类型。并且没有在该属性上使用@Lob注解,那么Hibernate将使用自带的serializable类型。

备注:项目中由于某些同时使用对象,同时没有使用java.io.Serializable和注解,数据中产生相应的@Lob这样的大数据类型
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值