【发布时间】:2012-12-10 22:45:21
【问题描述】:
我在 Web 服务器上使用 Java 和休眠来保存到 Oracle SQL 数据库。我创建了一个 Java Date 对象,但由于某种原因,当它进入数据库时,它只有日期而不是时间。例如,日期对象会说“2012 年 12 月 10 日下午 1:23:45”,但在数据库中它只说“10-DEC-12”
知道为什么会发生这种情况吗?下面是如何创建和保存日期的示例。
service.java
Session session = sessionFactory.openSession();
Transaction tx = session.beginTransaction();
Nos nos = new Nos();
nos.setTimeReceived( new Date() );
session.save( nos );
tx.commit();
Nos.java
@Entity
@Table(name = "nos")
@Cache(usage = CacheConcurrencyStrategy.READ_WRITE)
public class Nos
{
@Id
@GeneratedValue
private Long id;
@Basic(optional=false)
@Temporal(TemporalType.DATE)
@Column(name="timereceived")
private java.util.Date timeReceived;
// getters and setters
【问题讨论】:
-
这是记录在案的行为。
java.sql.Date不包含时间(阅读 Javadocs)。您需要使用Timestamp -
...虽然这引出了一个问题,但在数据库中的类型是什么?如果它只是一个
date类型,那么你在 Java 中做什么并不重要(了解 RDBMS 也可能很重要)。 -
非常好的@Clockwork-Musem,我没想到。
-
但是...我以为我读到 SQL DATE 确实包含时间?