怎么处理Hibernate里的date类型?
不是我不会处理,而是师傅说了“如果害怕出错的话,可以将除了主键Id之外的所有字段设为String类型,包括Date类型”,但我觉得这样不妥,请大家谈谈自己的看法吧!
------解决方案--------------------怎么会出错了回复内容太短了!
------解决方案--------------------hibernate可以用java.sql.Date
------解决方案--------------------
------解决方案--------------------http://blog.csdn.net/smartcat86/archive/2008/01/29/2070821.aspx
楼主 看看这里的 介绍
------解决方案--------------------当然不能这么做了!
比如有一个字段是金额,那我要求总金额,你用 varchar 了那怎么 sum 呢?
------解决方案--------------------比如说,date 类型在 Oracle 中占用 7 个字节,如果采用 varchar2 的话,年月日时分秒,加上分隔符 2010-03-01 23:39:00 需要占用 19 个字节,占用空间增加了 12 个字节。不仅如此,这个日期只能以这种格式进行显示,要更改显示格式的话,比如说不需要秒,那就要进行字符串处理。
如果把一个字符串式的日期存入数据库中,并且程序中也没有进行校验的话,那对数据的正确性会产生威害。
另外,其实现在有很多的应用,主键用的都是字符串呢,比如主键使用 UUID。主键使用 UUID 有利也有弊,对此正反双方都是争论不休的。
------解决方案--------------------如果只是一个主键,想建非聚集索引怎么办?你这个什么师傅啊?
我用的是SQL Server,关于数据字段的存储原理,请看我的读书笔记,相信你不会有些问题。
http://blog.csdn.net/downmoon/archive/2010/01/26/5256548.aspx
------解决方案--------------------对不起,最后一句应该是:
相信会解决你类似的这些疑惑。
------解决方案--------------------
------解决方案--------------------另问:Date类型有啥麻烦的?...
------解决方案--------------------我也来学习了,呵呵。
平常我也用的date转String辅以字符串操作来应付几种时间格式的需求,下次得改用Date了。
------解决方案--------------------不用那样用的
Date转为String后,Date的大小比较,排序问题就变得很麻烦
------解决方案--------------------hibernate难道不能处理date?
------解决方案--------------------
------解决方案--------------------自己做一个类型转换器,
Java code
public class DateConverter implements Converter {
public Object convert (Class type, Object value) {
if (value == null) {
return value;
}
if (value instanceof java.util.Date) {
return value;
}
if (value instanceof String) {
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
Date d = sdf.parse((String)value);
return d;
}
}
//注册转换器
public void init() {
ConvertUtils.register(new DateConverter
------解决方案--------------------
实体类中的日期用的java.util.Date,在实体类的映射文件里边这么写class=java.util.Date,
oracle是自己的Date类型,长度默认为7
------解决方案--------------------
为什么给 某个字段的get方法加上 @Temporal(TemporalType.TIMESTAMP) 这个注解后,在
@Column(name = "xxx_DATE", nullable = false, length = 7)指定他的长度为7 就没有用了呢
------解决方案--------------------