JPA + PostgreSQL:只有时间坚持下去

时间:2015-09-15 12:50:53

标签: java postgresql jpa spring-data-jpa

我有一个包含 timestamp without time zone 字段的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

日志输出如下:

binding parameter [6] as [TIMESTAMP] - [Wed Sep 16 08:57:03 CEST 2015]

更新2:

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

1 个答案:

答案 0 :(得分:2)

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