2012-02-27 61 views
1

我有一個實體與TIMESTAMP列。當我使用一個EntityManager在我的數據庫中保存一個新條目時,我可以在我的表中看到正確設置的新行,但是如果我嘗試使用preparedQuery檢索此實體,我會返回一個TIMESTAMP屬性爲Null的實體,而它在表中不爲空。檢索TIMESTAMP

@Basic(optional =  false) 
@NotNull 
@Column(name = "devis_date_crea", nullable = false) 
@Temporal(TemporalType.TIMESTAMP) 
private Date devisDateCrea; 

注:直到我在持久化上下文設置驗證國防部爲null persist方法拋出EJBCallBackException。

+0

您可以發佈您準備查詢代碼 – JScoobyCed 2012-02-27 15:09:53

回答

0

我不確定您是否知道,但SQL Timestamp實際上並不包含任何時間或日期。

時間戳是一種數據類型,它公開自動生成的二進制數字,這些數字在數據庫中保證是唯一的。時間戳通常用作對錶格行進行版本標記的機制。存儲大小是8個字節。

如果你需要日期時間,你應該使用日期時間類型。 如果您需要更改每個創建和更新,您可以使用默認值進行創建並觸發更新。

更多信息 http://msdn.microsoft.com/en-us/library/aa260631(v=sql.80).aspx

+0

謝謝你, 我想時間戳automaticaly設置在該領域的當前時間。 – user1235819 2012-02-27 15:15:30

+0

很高興幫助,請將其標記爲已回答:) – 2012-02-27 15:20:43

+0

我不確定是否真的是我的問題。 我得到了正確的結果,當前時間在持續時在行字段中設置。 如果我重新啓動我的應用程序檢索查詢給我的日期屬性不爲null的全表數據。 它只有當我堅持一個實體,並試圖檢索它,我獲得日期null。 :s 我認爲這更像是一個持久性問題,而不是數據特徵。 我使用MySQL和Glassfish與TopLink和EJB – user1235819 2012-02-27 15:26:30