保存到Oracle时,java.util.Date的时间是00:00:00

时间:2013-12-27 12:38:40

标签: java oracle date

我有一个这样的课程:

class Runner{ Date start; Date finish; }

和oracle中存储跑步者的表。我的问题是当我设定这一天:

start = new Date(System.currentTimeMillis()); //I use java.util.Date

当我使用Hibernate将对象保存到DB时。时间总是00:00:00(这一天是正确的)。 该列是DATE类型。我调试后发现在保存到db之前。 start具有正确的价值。我不知道这个。

请问你的家伙可以帮帮我吗?

更新:我正在使用Hibernate。 我的hbm文件如:

<property name="startDate" type="date">
    <column name="START_DATE" length="7" />
</property>

finish是一样的。在休眠时,保存时:我使用session.save(entity)

但是当我使用查询更新finish之类的

String updateQuery = "UPDATE Runner SET finish = ? WHERE id = ?"; 然后使用setParameter设置finish日期时间。没关系。

3 个答案:

答案 0 :(得分:3)

JDBC中的Date类仅存储日期(仅在年和日)。如果您还要存储当天的时间,则应使用Timestamp类以及随附的方法。

答案 1 :(得分:0)

由于Oracles DATE类型的分辨率为毫秒,因此您的java代码中的内容不正确。

JPA?使用TemporalType指定应将其作为时间戳处理。

JDBC,使用setTimestamp。 (也许setObject可能有效。)

答案 2 :(得分:0)

Java数据类仅存储日期,如果要存储日期和需要使用java.sql.Timestamp的时间,并且在数据库字段中必须是datetime数据类型。