2015-08-27 55 views
3

我的MySql數據庫中有一個datetime字段。典型的條目如下所示:2015-08-26 11:45:48將MySql日期時間映射到休眠

但是,當它到達我的應用程序的時間,分鐘和秒鐘總是00:00:00

這是映射條目:

<property name="listingTime" column="listing_time"/>   

場在我Java類是

private java.sql.Timestamp startTime; 

我想在我的hibernate.cfg.xmllistingTime屬性設置不同類型,但它不會改變全零。我錯過了什麼?

+1

你怎麼得到'Timestamp'? –

+0

你是什麼意思?它就像我在問題中寫的一樣。 – Eddy

+0

@Eddy:你爲什麼選擇'java.sql.Timestamp'類型的字段而不是'java.util.Date'? – beemaster

回答

4

更好地利用註釋是這樣的:

... 
@Column 
@Type(type="timestamp") 
private Date listing_time; 

或者你可以這樣來做,如果你不希望它改變看到「更新」

@Column(name = "created", nullable = false, updatable=false) 
@Temporal(TemporalType.TIMESTAMP) 
private Date created; 
+0

我在我的Product.hbm.xml中嘗試了type =「timestamp」,但它似乎沒有效果。 – Eddy

3

使用JPA,使用時間。

<entity class="com.package.of.my.entities.MyEntity" name="MyEntity"> 
    <attributes> 
     <basic name="startTime"> 
      <temporal>TIMESTAMP</temporal> 
     </basic> 
    </attributes> 
</entity> 

使用Hibernate(的hbm.xml),用戶

<hibernate-mapping package="com.package.of.my.entities"> 
    <class name="MyEntity"> 
     <timestamp name="startTime" column="START_TIME" /> 
    </class> 
</hibernate-mapping> 

或在註解

@Basic 
@Temporal(TemporalType.TIMESTAMP) 
private java.sql.Timestamp startTime; 

或者是使用長數據類型來存儲您的時間戳。 因此,使用註解,你在實體聲明:

@Basic 
private Long startTime; 

public void setStartTime(Long startTime) { 
    this.startTime = startTime; 
} 

public Long getStartTime() { 
    return startTime; 
} 

,並在你的邏輯,你做

Date dateStartTime = new Date(); 
entity.setStartTime(dateStartTime.getTime()); 

要設置日期屬性...和

Date dateStartTime = new Date(entity.getStartTime()); 

要獲取日期屬性。

+0

我正在使用hbm.xml。這是我的財產:。你如何指定時間? – Eddy

+0

你走了,我編輯了我的答案,添加了hbm.xml示例 –