java - JPA + PostgreSQL : Only time being persisted

标签 java postgresql jpa spring-data-jpa

我有一个 PostgreSQL 表,其中包含不带时区的时间戳字段。在我的 Java 代码中配置如下:

@Column(name = "timestamp")
@Temporal(TemporalType.TIMESTAMP)
private java.util.Date timestamp;

时间戳属性被设置为new Date(),即包含日期和时间。然而,在数据库中,日期部分没有被持久化,例如“14:40:28.889”;因此,当从数据库中检索日期时,不会加载日期并设置为默认值,即 01/01/1970。有什么想法时间戳的日期部分跑到哪里了吗?

更新: 我提高了 hibernate 的日志记录级别,这样我就可以通过在 application.properties 文件中添加以下内容来查看正在保留的内容:

logging.level.org.hibernate.SQL=DEBUG
logging.level.org.hibernate.type=TRACE

日志输出如下:

将参数 [6] 绑定(bind)为 [TIMESTAMP] - [2015 年 9 月 16 日星期三 08:57:03 CEST 2015]

更新2:

我单步执行代码,发现插入sql的日期格式为2015-09-16 11:16:09.416000 +02:00:00。我在 PGAdmin 中自动插入字符串,并且插入时没有错误。保存后单击小刷新按钮,日期部分消失了!所以数据被正确地保存,但不知何故 postgre 之后做了一些奇怪的事情。

最佳答案

这是有史以来最愚蠢的错误之一,我有一个创建表的脚本,它被标记为“没有时区的时间”,即不是时间戳,所以 PostgreSQL 显然删除了日期。我将留下这个问题,因为它可能会帮助某人调试类似的问题。

关于java - JPA + PostgreSQL : Only time being persisted,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32586590/

相关文章:

java - 如何将列表列表转换为 Java 8 中的列表?

mysql - 错误 : function avg(boolean) does not exist (MySql > PostgreSQL conversion)

java - Spring 数据JPA : How to fix NullPointerException in findById method of CrudRepository?

java - 如何使底部工作表对话框的角变圆?

java - 为什么 Jcreator 显示 iLlegal start of expression?

java - 为什么新用户使用Spring Boot注册后无法登录?

java - JPA:从实体到实体的 HashMap 在连接表中获取错误的主键

sql - 有没有一种简单干净的方法可以将 `DATE` 转换为 UTC 午夜该日期的 `TIMESTAMP AT TIME ZONE`?

MySQL 的 HEX() 和 UNHEX() 等同于 Postgres?

jpa - 带有RCP插件和Derby数据库的Eclipselink