2011-07-20 57 views
0

我正面臨一個獨特的問題。與java.util.Date和java.sql.TimeStamp衝突

我正在查詢一個數據庫字段,它有一個數據類型(在oracle中)作爲DATE。我從resultSet中檢索值爲rs.getObject(「myDate」)。我們有兩個具有相同配置的設置。在我寫rs.getObject(「myDate」).getClass()時的一個設置中,我是geeting java.sql.TimeStamp,在另一個設置上它返回java.util.Date。我面臨的問題是,當它返回一個日期對象時,它將忽略時間並僅返回日期部分。

+0

數據庫列是否相同,類型+長度定義? – home

回答

0

ALS信息:java.sql.Timestamp中是java.util.Date,因爲它擴展它。

日期也有時間,但它沒有納秒,這是唯一的區別。令人遺憾的是,這是它實施的方式,但不是它應該的方式。從自己的文檔:

Timestampjava.util.Date之間的繼承關係實際上指的是實現繼承,而不是類型繼承。 https://docs.oracle.com/javase/7/docs/api/java/sql/Timestamp.html

這意味着他們懶得寫一些封裝。這會導致很多怪癖,像hashcode在納秒和不對稱等式中不會改變。