我有一个 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/