我有一個簡單的REST Api暴露幾個實體,其中一些實體有日期字段,我想以UNIX時間戳格式存儲在H2數據庫中。然而,這引起followign例外:'1980-04-08'
:如何在h2數據庫中存儲時間戳
Caused by: org.h2.jdbc.JdbcSQLException: Cannot parse "TIMESTAMP" constant "335923000"; SQL statement:
INSERT INTO people (person_id, first_name, last_name, email, gender, location, date_birth) VALUES
('1', 'Peter', 'Smith', '[email protected]', 'MALE', 'London', 335923000),
...
此前,它與時間戳的格式如下工作。
這是SQL表定義:
CREATE TABLE people (
person_id BIGINT PRIMARY KEY auto_increment,
first_name VARCHAR(32),
last_name VARCHAR(32),
email VARCHAR(128) UNIQUE,
gender VARCHAR(8),
location VARCHAR(32),
date_birth TIMESTAMP,
);
和我的映射對象(省略不必要的細節):
@Entity
@Table(name = "people")
@Getter
@Setter
public class Person {
@Id
@GeneratedValue(strategy = GenerationType.AUTO)
@Column(name = "person_id")
private long id;
...
@Column(name = "date_birth")
@JsonFormat(pattern = "YYYY-MM-dd")
private Date dateOfBirth;
...
}
我承擔了@JsonFormat
批註沒有什麼關係數據庫時間戳格式,但我不知道如何告訴休眠我的時間戳是UNIX格式。
我看過convert unix timestamp to H2 timestamp和H2文檔,應支持此標準格式。有人能指出我,我做錯了什麼?
你使用java.util.Date或java.sql.Date? – mhasan
@mhasan我正在使用java.util.Date – Smajl
您是否嘗試過使用'DATE'而不是'TIMESTAMP',因爲您的列名稱表明它只是一個日期,而不是時間戳? –