2012-09-24 93 views
0

我想要做的是獲取兩個事件之間的差異,在這種情況下,商店開始製作特定項目的事件以及同一商店開始傳輸的時間它給客戶的位置。 我使用java和hibernate開發這個WebApp。 的實體被稱爲報告(因爲我將生成此信息的報告) 兩個事件的屬性是:檢索時存儲在數據庫中的休眠時間戳值爲零

@Column 
private Timestamp fechaFabricacion; 
@Column 
private Timestamp fechaTransporte; 

它們被存儲在我的數據庫正確爲:

2012-09-24 13:13:10 

爲製造開始 和

2012-09-24 13:13:40 

運輸開始。

我想報告的是,它需要商店(在這種情況下)30秒從製造到運輸。 現在,值被完美地存儲了,我遇到的問題是當我嘗試從數據庫中檢索它並進行數學運算時,這是我使用的代碼。

Query qr = em.createNamedQuery("Reporte.findByNumSeguimientoEntrega"); 
    qr.setParameter("numSeguimientoEntrega",numSeguimiento); 
    List<Reporte> reportList = qr.getResultList(); 
    Reporte report = reportList.get(0); 
    Timestamp timeStamp1 = report.getFechaInicio(); 
    Timestamp timeStamp2 = report.getFechaFabricacion(); 
    Long timeDiference =(timeStamp1.getTime()-timeStamp2.getTime())/(1000 * 60 * 60 * 24); 

的問題是,即時得到0的兩個時間戳納米值作爲我的調試器顯示此圖像中:

我到底做錯了什麼?我怎樣才能得到真正的價值和獲得時差?

非常感謝您花時間閱讀本文。

+0

你說的區別應該是「秒」?但是你正在計算「天數」(如果實際差異只有30秒,這當然是0)。 – jtahlborn

回答

0

你必須在你的實體日期的地圖註解:

@Temporal(TemporalType.TIMESTAMP) 
@Column(name = "DATE") 
public Date getDate() { 
    return this.date; 
} 

我想這樣,它應該只是罰款。

+0

感謝您的快速響應,問題是我需要將它與月,日,小時,分鐘和秒存儲,因爲製作可能需要幾周或幾秒鐘。當我嘗試使用@Temporal(TemporalType.TIMESTAMP)它不會讓我編譯爲服務器說:org.hibernate.AnnotationException:@Temporal應該只設置java.util.Date或java.util.Calendar。 – oskar132

+0

你爲什麼不把它改爲日期?它會存儲你所需要的所有數據。這是我使用它的方式,它確實適用於這些情況。可能帶有註釋,它在內部將日期存儲爲時間戳,但對象必須是一次Timestamp擴展日期的日期。 – gdfbarbosa

+0

謝謝你,我會試試看,並讓你知道它是否有效 – oskar132