2
我正在使用H2 Database進行單元測試。H2數據庫 - Java的OffsetDateTime和h2類型之間的映射
根據官方文檔H2,有Java的OffsetDateTime
和h2的數據類型(TIMESTAMP WITH TIME ZONE
映射到Java的H2 TimestampWithTimezone
類型,這不是我所需要的)之間的映射關係。
有什麼辦法可以達到這個目的嗎?
我正在使用H2 Database進行單元測試。H2數據庫 - Java的OffsetDateTime和h2類型之間的映射
根據官方文檔H2,有Java的OffsetDateTime
和h2的數據類型(TIMESTAMP WITH TIME ZONE
映射到Java的H2 TimestampWithTimezone
類型,這不是我所需要的)之間的映射關係。
有什麼辦法可以達到這個目的嗎?
雖然這是事實,一個普通的getObject(int columnIndex)
會返回一個org.h2.api.TimestampWithTimeZone
對象,使用getObject(int columnIndex, Class<T> type)
返回一個java.time.OffsetDateTime
在我看來,使用H2版本1.4.196的做工精細:
package h2test;
import java.sql.*;
import java.time.OffsetDateTime;
public class H2testMain {
public static void main(String[] args) {
try (Connection conn = DriverManager.getConnection("jdbc:h2:mem:test")) {
Statement st = conn.createStatement();
st.execute("CREATE TABLE TEST (ID INT PRIMARY KEY, TWTZ TIMESTAMP WITH TIME ZONE)");
st.execute("INSERT INTO TEST (ID, TWTZ) VALUES (1, '1981-02-03 19:20:21-02:00')");
ResultSet rs = st.executeQuery("SELECT TWTZ FROM TEST WHERE ID=1");
rs.next();
OffsetDateTime odt = rs.getObject(1, OffsetDateTime.class);
System.out.println(odt.getClass().getName()); // java.time.OffsetDateTime
System.out.println(odt.toString()); // 1981-02-03T19:20:21-02:00
} catch (Exception e) {
e.printStackTrace(System.err);
}
}
}