[英]Hibernate java.sql.Date field return only date for Oracle
我正在使用oracle數據庫檢索日期和時間,但是當我使用java.sql.Date時,它僅返回日期。 我曾嘗試使用java.sql.Timestamp,但由於錯誤的列類型而給了例外。 我嘗試使用V8Compatible配置。 但這也不起作用。 我無法在數據庫端進行任何更改。 在數據庫中,該列的類型為DATE。
請給個建議
為此,您應該使用ojdbc14.jar和oracle.sql.DATE
您可以嘗試插入精度為2的時間戳。檢查此Stack Overflow Question 。 由於Oracle Date數據類型等效於Java中的java.sql.Timestamp。 參考
或只是去java.util.Date,它應該工作。 格式化和插入的簡便方法。 像這個例子
某些代碼會很好,但是您是否嘗試使用@Temporal(TemporalType.TIMESTAMP)
注釋日期字段?
9.2之前的版本,Oracle JDBC驅動程序將DATE SQL類型映射到java.sql.Timestamp。 這在一定程度上是有道理的,因為Oracle DATE SQL類型像java.sql.Timestamp一樣包含日期和時間信息。 到java.sql.Date的更明顯的映射有些問題,因為java.sql.Date不包含時間信息。 在這種情況下,RDBMS不支持TIMESTAMP SQL類型,因此將DATE映射到Timestamp也沒有問題。
在9.2中,TIMESTAMP支持已添加到RDBMS。 DATE和TIMESTAMP之間的區別在於TIMESTAMP包括納秒,而DATE不包括。 因此,從9.2開始,DATE映射到Date,而TIMESTAMP映射到Timestamp。 不幸的是,如果您依賴於DATE值來包含時間信息,則會出現問題。
在9.2至10.2驅動程序中,有幾種方法可以解決此問題:
更改表以使用TIMESTAMP而不是DATE。 這可能極少發生,但在可能的情況下是最佳解決方案。 欲獲得更多信息
請參閱: http : //www.oracle.com/technetwork/database/enterprise-edition/jdbc-faq-090281.html#08_01
確保一次使用以下代碼,因為第一個用於創建時間戳,然后使用get方法從oracle數據庫中檢索日期android時間。
......................
java.util.Date android = new java.util.Date();
long t = android.getTime();
java.sql.Date sqlDate = new java.sql.Date(t);
java.sql.Time sqlTime = new java.sql.Time(t);
java.sql.Timestamp sqlTimestamp = new java.sql.Timestamp(t);
......................
pstmt.getDate(2, sqlDate);
pstmt.getTime(3, sqlTime);
pstmt.getTimestamp(4, sqlTimestamp);
pstmt.executeUpdate();
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.