UTCタイムゾーンのトラブルに+春ブーツストア日付を休止

Avdev4j:

私は自分のアプリケーションのデフォルトのタイムゾーンとしてUTCを定義するためにいくつかのテストを作ってるんです。まず第一に、私は私のdatetime値はUTCのいずれかで保存することにしたいです。

ヴラッド・ミホールセアによると(https://vladmihalcea.com/how-to-store-date-time-and-timestamps-in-utc-time-zone-with-jdbc-and-hibernate/)とhttps://でmoelholm .COM / 11分の2016/09 /春・ブート・タイムゾーン-と、休止状態を制御/私はプロパティファイルに設定されています:

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

私はH2データベースを使用しているテストのために、私はすべてのJava 8のdateTimeタイプでサンプルエンティティを作成しました。

私のLiquiBaseを設定では、彼らはこのように定義されています。

<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」を除くすべてのフィールドの仕事です。

ここでは、画像の説明を入力します。

あなたが見ることができるように私は8:39(パリGMT + 2)にこの行を追加し、タイムスタンプは良いUTC値(午前6時38午前)を持っています。しかし、「LOCAL_TIME」と「offset_time」の両方が変な値(7:39)を持っています。

あなたのいくつかのアイデアを持っている場合、この動作は、なぜ私の2時間フィールドがない正しく値を格納私はなぜだろうか。

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:

私は、Hibernateのバグトラッカーに問題を開いて、私の問題の答えを持っていました。

LocalTimeのために形質転換のは、私がテストを実行していた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=199530&siteId=1