java - 如何在h2数据库中存储时间戳

标签 java hibernate h2

我有一个简单的 REST Api 公开了几个实体,其中一些实体有日期字段,我想以 UNIX 时间戳格式将其存储在 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', 'peter@hotmail.com', 'MALE', 'London', 335923000),
    ...

以前,它使用以下格式的时间戳:'1980-04-08'

这是 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 注释与数据库时间戳格式没有任何关系,但我不确定如何告诉 hibernate 我的时间戳是 UNIX 格式。

我看过convert unix timestamp to H2 timestamp和 H2 文档,应该支持这种标准格式。有人可以指出我做错了什么吗?

最佳答案

好吧,答案已经以另一种方式完成了here

你会找到一种方法来表示没有时区的毫秒日期时间(这就是 SQL 中的“时间戳”)

关于java - 如何在h2数据库中存储时间戳,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39685463/

相关文章:

java - 错误:- 'java' is not recognized as an internal or external command

java - 数组常量只能在初始化器中使用

mysql - Spring Boot加载时清除MySQL表数据

mysql - 如何从shell脚本将diff.sql应用到mysql数据库

java - 未找到 persistence.xml - 使用 NoSql 数据库的 Gradle-Spring-MVC 项目

java - Spring boot JPA空指针异常

java - 我的 japplet 可以编译,但在 applet 查看器中显示为空白

java - 在 eclipse 中使用 Gwt 2.7

java - 如何在 OpenTest 中开始新的测试 session ?

java - Spring Boot H2数据转换