hibernate Java 時間和日期型別的 Hibernate 對映
阿新 • • 發佈:2019-02-07
基礎知識:
在 Java 中, 代表時間和日期的型別包括: java.util.Date 和 java.util.Calendar. 此外, 在 JDBC API 中還提供了 3 個擴充套件了 java.util.Date 類的子類: java.sql.Date, java.sql.Time 和 java.sql.Timestamp, 這三個類分別和標準 SQL 型別中的 DATE, TIME 和 TIMESTAMP 型別對應
在標準 SQL 中, DATE 型別表示日期, TIME 型別表示時間, TIMESTAMP 型別表示時間戳, 同時包含日期和時間資訊.
如何進行對映?
1.因為java.util.Date是 java.sql.Date, java.sql.Time 和 java.sql.Timestamp的父類,所以java.util.Date可以對應標準sql型別中的DATE,TIME和TIMESTAMP可以通過property的type型別進行對映,例如: <property name="date" type="time">
<column name="DATE" />
</property>
<property name="date" type="data">
<column name="DATE" />
</property><property name="date" type="timestamp">
<column name="DATE" />
</property>
使用 Hibernate 內建對映型別
以下情況下必須顯式指定 Hibernate 對映型別
一個 Java 型別可能對應多個 Hibernate 對映型別. 例如: 如果持久化類的屬性為 java.util.Date 型別, 對應的 Hibernate 對映型別可以是 date, time 或 timestamp. 此時必須根據對應的資料表的欄位的 SQL 型別, 來確定 Hibernate 對映型別. 如果欄位為 DATE 型別, 那麼 Hibernate 對映型別為 date; 如果欄位為 TIME 型別, 那麼 Hibernate
對映型別為 time; 如果欄位為 TIMESTATMP 型別, 那麼 Hibernate 對映型別為 timestamp.