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+ 轉換器)。DATETIME 或 TIMESTAMP,Oracle 用 DATE 或 TIMESTAMP,SQL Server 用 DATETIME2。@Temporal(TemporalType.TIMESTAMP)
@Column(name = "CREATE_TIME")
private Date createTime;
若專案已遷移至 JPA/Hibernate 5+,推薦使用 LocalDateTime + @Column(columnDefinition = "DATETIME"),完全避開 java.util.Date 時區陷阱。