我有一个这样的课程:
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
日期时间。没关系。
答案 0 :(得分:3)
JDBC中的Date
类仅存储日期(仅在年和日)。如果您还要存储当天的时间,则应使用Timestamp
类以及随附的方法。
答案 1 :(得分:0)
由于Oracles DATE类型的分辨率为毫秒,因此您的java代码中的内容不正确。
JPA?使用TemporalType指定应将其作为时间戳处理。
JDBC,使用setTimestamp。 (也许setObject可能有效。)
答案 2 :(得分:0)
Java数据类仅存储日期,如果要存储日期和需要使用java.sql.Timestamp的时间,并且在数据库字段中必须是datetime数据类型。