UTC 시간대 문제에 + 봄 부트 저장 날짜를 최대 절전 모드

Avdev4j :

내 응용 프로그램의 기본 시간대로 UTC를 정의하는 몇 가지 테스트를 만들고있어. 우선 내 날짜 값은 UTC 하나에 저장할.

블라드 미할 세아에 따르면 ( https://vladmihalcea.com/how-to-store-date-time-and-timestamps-in-utc-time-zone-with-jdbc-and-hibernate/ )와 https : //로 moelholm .COM / 11분의 2,016 / 09 / 스프링 부팅 - 시간대 -와 - 최대 절전 모드를 제어 / 내 속성 파일에 설정 한 :

spring.jpa.properties.hibernate.jdbc.time_zone= UTC

내가 H2 데이터베이스를 사용하고 테스트를 위해, 나는 모든 자바 8 dateTime으로 형식의 샘플 법인을 만들었습니다.

내 liquibase에서 그들은 다음과 같이 정의된다 config (설정) :

<column name="instant" type="timestamp"/>
<column name="local_date" type="date"/>
<column name="local_time" type="time"/>
<column name="offset_time" type="time"/>
<column name="local_date_time" type="timestamp"/>
<column name="offset_date_time" type="timestamp"/>
<column name="zoned_date_time" type="timestamp"/>

나는 모든 필드의 좋은 유형을 사용하고 있습니다 생각합니다. 그것은 시간 SQL 유형하지 타임 스탬프입니다 "LOCAL_TIME" "offset_time"을 제외한 모든 필드에 대한 작업입니다.

여기에 이미지 설명을 입력

당신이 볼 수 있듯이 나는 (파리 GMT + 2) 8:39 am에이 행을 추가 타임 스탬프는 좋은의 UTC 값 (6:38 AM)을 가지고있다. 하지만 모두 "LOCAL_TIME"와 "offset_time는"이상한 값 (7:39 AM)을 가지고있다.

당신의 어떤 아이디어가있는 경우이 문제가 왜 내 두 시간 필드를 제대로 수행하지 않는 값을 저장하는 이유를 궁금해.

PS : 버전 :

  • 최대 절전 모드 : 5.2.17.Final를
  • 봄 부팅 : 2.0.4.RELEASE

내 샘플 엔티티를 사용하여 데이터를 삽입 :

import javax.persistence.*;
import java.io.Serializable;
import java.time.*;
import java.util.Objects;

@Entity
@Table(name = "avdev_myData")
public class MyData implements Serializable {

    private static final long serialVersionUID = 1L;

    @Id
    @GeneratedValue(strategy = GenerationType.SEQUENCE, generator = "sequenceGenerator")
    @SequenceGenerator(name = "sequenceGenerator")
    private Long id;

    @Column(name = "name")
    private String name;

    @Column(name = "instant")
    private Instant instant;

    @Column(name = "local_date")
    private LocalDate localDate;

    @Column(name = "local_time")
    private LocalTime localTime;

    @Column(name = "offset_time")
    private OffsetTime offsetTime;

    @Column(name = "local_date_time")
    private LocalDateTime localDateTime;

    @Column(name = "offset_date_time")
    private OffsetDateTime offsetDateTime;

    @Column(name = "zoned_date_time")
    private ZonedDateTime zonedDateTime;
Avdev4j :

나는 최대 절전 모드 버그 추적기에서 문제를 열고 내 문제의 답을했다.

로컬 시간을 위해 어트 변환 내가 테스트를 실행했던 1970년 1월 1일없는 하루를 기준으로합니다. 그래서 DST는 처리되지 않습니다.

블라드 미할 세아에 따르면 우리는 DST 기간 또는 아니라면 우리가 날짜와 물론 알고 대신 때문에 LocalDateTime을 사용해야합니다.

전체 응답이 여기에 있습니다 : https://hibernate.atlassian.net/browse/HHH-12988?focusedCommentId=103750&page=com.atlassian.jira.plugin.system.issuetabpanels%3Acomment-tabpanel#comment-103750

문안 인사

추천

출처http://43.154.161.224:23101/article/api/json?id=199528&siteId=1