2012-04-20 19 views
1

嘿我需要從表返回日期爲一個長(毫秒)。我需要訪問的列在oracle數據庫上,並且是Timestamp類型(名稱爲ROW_TMSTP)。返回日期只要在實體

我做了什麼是:

@Column(name = "ROW_TMSTP") 
@Override 
@Temporal(TemporalType.TIMESTAMP) 
public Date getEntityTimeStamp() { 
    return entityTS; 
} 

@Transient 
public Long getVersion() { 
    return entityTS.getTime(); 
} 

的作品..有時。 如果我想選擇版本高於x的記錄,它不起作用。

如何編寫一個對Timestamps有效的實體類?

請不要試圖說服我改變數據庫結構..我必須堅持有什麼,我必須通過getVersion返回一個字段。

謝謝!

編輯在getVersion映射

缺乏了我的選擇查詢,導致無效的標識符。刪除@Transient並添加適當的映射解決了這個問題。

@Column(name="ROW_TMSTP", updatable=false, insertable=false) 
public Long getVersion() { 
    return entityTS.getTime(); 
} 

雖然有點棘手,但長期以來的比較......但這不是我的問題。

+0

你是怎麼解決比較問題的? – Sudhakar 2012-05-10 14:33:16

+0

解釋在上面 - 不是@Transient Long getVersion的作品。 – Deo 2013-07-30 11:19:01

回答

0

它不工作,如果我要選擇記錄,其中版本比X

一名候補一路走高 的,而不是在where子句中使用的版本,我們也可以將長成timestamp和在where子句中使用entityTimestamp應該這樣做我猜

+0

是的,我明白了,但這意味着我必須改變大約40個queryString,我不想這樣做。 – Deo 2012-04-20 14:15:38