我有一个简单的REST Api暴露了几个实体,其中一些实体有日期字段,我希望以UNIX时间戳格式存储在H2数据库中.但是,这会导致以下异常:Caused by: org.h2.jdbc.JdbcSQLException: Cannot parse TIMESTAMP constant 33...

我有一个简单的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中的“timestamp”)
本文标题为:java – 如何在h2数据库中存储时间戳


基础教程推荐
- Java数据结构之二叉搜索树详解 2022-12-02
- 以Java Web项目为例浅谈前后端分离开发模式 2022-09-03
- springboot vue测试列表递归查询子节点下的接口功能实现 2022-11-19
- JSP实用教程之简易图片验证码的实现方法(附源码) 2023-07-31
- window 下 win10 jdk8安装与环境变量的配置过程 2023-04-22
- SpringBoot中利用AOP和拦截器实现自定义注解 2023-02-04
- Spring集成Web环境与SpringMVC组件的扩展使用详解 2023-04-22
- Classloader隔离技术在业务监控中的应用详解 2023-04-23
- Java内存模型 2023-09-01
- 关于jd-gui启动报This program requires Java 1.8+的错误问题及解决方法 2022-11-11