Hibernate连接Oracle的Date类型字段丢失时间问题(解决方案)

问题

     日期类型字段在数据库中存储时为:2009-12-13 23:30:59,而在页面浏览显示时只显示:2009-12-13 000000

原因

     hibernate在与oracle数据库交互时对数据库中定义为Date类型的字段,自动映射为java.sql.Date。而java.sql.Date本身只取日期不取时间,故从vo获得的数据全部没有时间。目前vo中的Date均为java.util.Date,不存在问题。

解决方案

    要想取到数据库中的时间,必须使用java.sql.Timestamp 来映射数据库中的Date型字段,更改相应表的映射文件,如product.hbm.xml中的属性映射:

        <property name="starttime" type="java.sql.Timestamp">

            <column name="STARTTIME" length="7" />

        </property>

        <property name="endtime" type="java.sql.Timestamp">

            <column name="ENDTIME" length="7" />

        </property>

   其他部分不用任何更改,voDate类型仍为java.util.Date不动。

另外:

     解决这个问题之前也看了很多网上的资料,有说要改VO的,但那样做极不方便,最后发现其实只要把映射文件的类型更改就可以了,VO如果是自动生成的,一般都是用java.util.Date来映射Oracle的Date字段的,这个不用动,目前没发现对原有程序有任何影响。

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值