我在Web服务器上使用Java和hibernate来保存到Oracle SQL数据库。我创建了一个Java Date
对象,但出于某种原因,当它进入数据库时,它只有日期而不是时间。例如,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
答案 0 :(得分:10)
使用TemporalType.TIMESTAMP
,对应java.sql.Timestamp
。
根据the TemporalType
JavaDocs,TemporalType.DATE
映射到java.sql.Date
,正如您所看到的那样,没有时间组件:
为了符合SQL
DATE
的定义,java.sql.Date
实例包含的毫秒值必须通过在特定时间内将小时,分钟,秒和毫秒设置为零来“标准化”与实例关联的区域。