2016-12-23 56 views
1

我們使用源代碼鏈接將生成的hibernate bean包含在eclipse中的j2ee web項目中。我們有一個包含各種公用事業和服務的項目,以及主要項目。@Web項目中的版本中斷

當我們將我們的bean導入到實用程序項目中時,bean導入正常。他們有hibernate 4.3和hibernate-jpa 2.1 jar。但是,當我將相同的模型bean導入到主項目中時,@Version註釋會導致編譯錯誤。它說:

JSR 220:Java持久性API 9.1.17:版本屬性只支持以下類型:int,Integer,short,Short,long,Long,Timestamp。

的代碼是:

@Temporal(TemporalType.TIMESTAMP) 
@Column(name = "UPDT_TMSTMP", nullable = false) 
@Version 
private Date updateTimestamp; 

這就像我說的,當導入到一個簡單的Java項目,但在導入到Web模塊(我們嘗試了)完美的作品它得到這個錯誤。錯誤文本似乎是說我們不能使用java.util.Date作爲屬性類型,但是我們再次使用它,當導入到實用工程時。

我們無法解釋爲什麼實用程序項目與web模塊之間的區別。我們希望在Web模塊中使用它,因爲我們希望能夠移動這些實用程序模塊,而無需多次導入相同的模型Bean。

任何想法?即使調查的途徑會比我們現在擁有的更好。我們正在打擊。

+0

你確定這是一個編譯錯誤,而不是Eclipse插件的錯誤(如JPA插件)? Java編譯器不關心具有註釋的字段的類型。所以大多數情況下,錯誤來自JPA集成插件,這可能是由錯誤配置的構建路徑導致的(即,如果JPA設置爲較舊版本,則與其他項目一樣)。 – dunni

+0

您是否嘗試使用java.sql.Date而不是java.util.Date? 您可能還會檢查數據庫是否配置爲以毫秒級精度存儲時間戳。 – fg78nc

+0

您也可以嘗試使用java.sql.Timestamp – fg78nc

回答

2

請使用時間戳。有些國家有一個DST(從我的一個愚蠢的想法)。在這個國家,日期可以存在,可以是重複的或永遠不存在的。時間戳沒有這樣的例外,並且與SSOT相比更好。如果你有一個移動的服務器(在飛機或汽車或潛艇,有時可能會改變時區),本地化的TimestampZ可能會更好。

相關問題