Java JPA&x2B;PostgreSQL:仅持久化时间

Java JPA&x2B;PostgreSQL:仅持久化时间,java,postgresql,jpa,spring-data-jpa,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”;因此,从数据库检索时,不会加载日期,并将其设置为默认值,即1970年1月1日

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

@Column(name = "timestamp")
@Temporal(TemporalType.TIMESTAMP)
private java.util.Date timestamp;
时间戳属性设置为
new Date()
,即同时包含日期和时间。但是,在数据库中,日期部分没有被持久化,例如“14:40:28.889”;因此,从数据库检索时,不会加载日期,并将其设置为默认值,即1970年1月1日。你知道时间戳的日期部分会跑到哪里吗

更新: 我增加了hibernate的日志记录级别,以便通过在application.properties文件中添加以下内容来查看正在持久化的内容:

logging.level.org.hibernate.SQL=DEBUG
logging.level.org.hibernate.type=TRACE
日志输出如下所示:

@Column(name = "timestamp")
@Temporal(TemporalType.TIMESTAMP)
private java.util.Date timestamp;
绑定参数[6]为[TIMESTAMP]-[Wed Sep 16 08:57:03 CEST 2015]

更新2:


我仔细检查了代码,找到了日期格式为
2015-09-16 11:16:09.416000+02:00:00
的插入sql。我在PGAdmin中自动插入字符串,并且插入时没有错误。保存后,单击小刷新按钮,日期部分消失!因此,数据被正确地持久化了,但不知何故,postgre后来做了一些奇怪的事情

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

看看用于持久化它的SQL?因为它使用JPA,我只调用save()方法,日志只显示
插入批处理步骤(项id、结果、步骤、步骤id、成功、时间戳)值(?、、、、、?)
大多数(全部)JPA提供者可以选择查看传入的参数。你不用说你用的是哪一个。JPA没有“save”方法我使用的是org.springframework.data.JPA.repository.JpaRepository提供的save方法,因此您使用的是“Spring-data-JPA”,而不是JPA API。尽管如此,所有JPA提供者(DataNucleus、EclipseLink、Hibernate等)都提供了一种查看这些参数值的方法,因此请查阅您正在使用的文档。