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字段的,这个不用动,目前没发现对原有程序有任何影响。

你可能感兴趣的:(oracle,Hibernate,数据库,Date,存储)