首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> 更多程式語言 >> 程式設計疑難解答

Hibernate 映射 Date 類型:時間戳 (yyyy-MM-dd HH:mm:ss) 配置詳解

     編輯:程式設計疑難解答

Hibernate 對 java.util.Date 預設映射為資料庫 TIMESTAMP (含時分秒),通常無需額外配置。若映射檔寫法導致格式錯誤,常見原因如下:

正確映射寫法

<property name="createTime" type="timestamp" column="CREATE_TIME"/>
<!-- 或明確指定 -->
<property name="createTime" column="CREATE_TIME">
    <type name="timestamp"/>
</property>

錯誤示範:type="java.util.Date"、type="datetime" (資料庫類型非 Hibernate 類型)、自訂類型名拼錯。

常見坑點

  • 實體類欄位類型:必須是 java.util.Date 或 java.sql.Timestamp,不可為 String 或 LocalDateTime (除非用 JPA 2.1+ 轉換器)。
  • 資料庫欄位類型:MySQL 用 DATETIME 或 TIMESTAMP,Oracle 用 DATE 或 TIMESTAMP,SQL Server 用 DATETIME2。
  • 時區一致性:JVM、資料庫、連線池時區建議統一為 UTC,避免寫入/讀出偏移。

註解式配置 (JPA)

@Temporal(TemporalType.TIMESTAMP)
@Column(name = "CREATE_TIME")
private Date createTime;

若專案已遷移至 JPA/Hibernate 5+,推薦使用 LocalDateTime + @Column(columnDefinition = "DATETIME"),完全避開 java.util.Date 時區陷阱。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved