首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在Postgres中,没有时区默认CURRENT_TIMESTAMP的字段时间戳的JPA模型类?

在Postgres中,没有时区默认CURRENT_TIMESTAMP的字段时间戳的JPA模型类?
EN

Stack Overflow用户
提问于 2019-07-08 15:21:55
回答 1查看 8.1K关注 0票数 0

下面我已经在Postgres中使用了Java 8和Postgres-11和Spring 我已经通过了this questionthis question,但是我真的很想使用Java8DataAPI,而不是Java7。

代码语言:javascript
复制
CREATE TABLE note(
    note_id serial PRIMARY KEY,
    message varchar(255) NOT NULL,
    created_at TIMESTAMP WITH TIME ZONE DEFAULT CURRENT_TIMESTAMP
);

我创建了如下所示的模型类,但与我所需要的不匹配。

代码语言:javascript
复制
@Data
@Builder
@AllArgsConstructor
@NoArgsConstructor
@EqualsAndHashCode(callSuper = true)
@Entity
public class Note extends AuditEnabledEntity{
    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    @Column(name = "note_id")
    private int noteId;
    
    @Column(name = "message")
    private String message;
    
    @Column(name = "created_at")
    private LocalDateTime createdAt;
}
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2019-07-08 15:40:24

错误类型

LocalDateTime在这里是错误的类型。正如在Javadoc中所解释的那样,这个类不能表示瞬间。

该类故意没有时区的概念,也没有与世界协调时相抵消的概念。因此,它代表了一个日期和一个时间,比如“2019年1月23日的中午”,但不知道那是东京、巴黎或蒙特雷的中午,例如,三个非常不同的时刻,相隔几个小时。因此,这种类型适用于标准的SQL类型TIMESTAMP WITHOUT TIME ZONE -没有,而不是使用。

有关更多讨论,请参见:https://stackoverflow.com/q/32437550/642706

右型

对于标准的SQL类型TIMESTAMP WITH TIME ZONE,您应该使用InstantOffsetDateTimeZonedDateTime类型。其中,JDBC4.2只需要对第二个OffsetDateTime的支持。

检索。

代码语言:javascript
复制
OffsetDateTime odt = myResultSet.getObject( … , OffsetDateTime.class ) ;

从Postgres检索的值将始终以UTC为单位。SQL标准没有指定此行为,因此数据库有所不同。在Postgres中,发送到TIMESTAMP WITH TIME ZONE类型字段的任何值都会调整为UTC。检索到的值以UTC表示。

储存。

代码语言:javascript
复制
myPreparedStatement.setObject( … , odt ) ;

从世界协调时(零偏移)调整到特定地区(时区)的人使用的挂钟时间。

代码语言:javascript
复制
ZoneId z = ZoneId.of( "Asia/Tokyo" ;
ZonedDateTime zdt = odt.atZoneSameInstant( z ) ;

JPA

我不使用JPA,我更喜欢保持简单。

但是根据this Answer的说法,JPA2.2支持java.time类型。

Hibernate也支持java.time。

票数 5
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/56938079

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档