JPA中的日期到日期时间转换

时间:2013-01-10 22:14:53

标签: java oracle datetime jpa jdbc

我将Oracle DB中存储的值视为19-JAN-13。当我通过以下结果得到结果时:

List list1 = getEntityManager().createQuery(query).getResultList()

我看到的值为2013-01-19 07:03:49.0,而不是2013-01-19 00:00:00.02013-01-19 23:59:59.9

我想知道为什么会这样?不应该将date到datetime的默认时间转换为零吗?该行于2013年1月1日07:03:49.0时创建。

访问者定义为

@Column(name = "FREE_TRIAL_EXPIRY_DATE")
public Date getFreeTrialExpiryDate() {
    return freeTrialExpiryDate;
}
public void setFreeTrialExpiryDate(Date freeTrialExpiryDate) {
    this.freeTrialExpiryDate = freeTrialExpiryDate;
}

2 个答案:

答案 0 :(得分:2)

实际上,Oracle Date类型存储了日期和时间的值。您的Oracle工具恰好只显示日期DD-MM-YYYY值。

您只需在Java应用程序中正确输出格式,即可获得所需的DD-MM-YYYY演示文稿。

底线是Java没有弥补时间值。

答案 1 :(得分:1)

Oracle始终会保留时间,这就是它的方式。 Oracle的'DATE'包含到第二个的时间,它不等同于永恒的java.sql.Date。

如果您希望该字段为无时间日期,则需要在应用程序级别通过以下方式指定截断:

@Temporal(TemporalType.DATE)

在实体上。