相关疑难解决方法(0)

JPA使用ZoneOffset存储OffsetDateTime

我有以下实体类:

@Entity
public class Event {
    private OffsetDateTime startDateTime;
    // ...
}
Run Code Online (Sandbox Code Playgroud)

然而,持续的,然后从与JPA 2.2结果数据库读取的实体/在信息丢失:所述ZoneOffsetstartDateTime改变UTC(在ZoneOffset所使用的数据库的时间戳).例如:

Event e = new Event();
e.setStartDateTime(OffsetDateTime.parse("2018-01-02T09:00-05:00"));

e.getStartDateTime().getHour(); // 9
e.getStartDateTime().getOffset(); // ZoneOffset.of("-05:00")
// ...
entityManager.persist(e); // Stored startDateTime as timestamp 2018-01-02T14:00Z

Event other = entityManager.find(Event.class, e.getId());
other.getStartDateTime().getHour(); // 14 - DIFFERENT
other.getStartDateTime().getOffset(); // ZoneOffset.of("+00:00") - DIFFERENT
Run Code Online (Sandbox Code Playgroud)

我需要使用OffsetDateTime:我无法使用ZonedDateTime,因为区域规则发生了变化(而且还会受到此信息丢失的影响).我无法使用LocalDateTime,因为Event世界上任何地方都会发生这种情况,因为ZoneOffset出于准确性原因我需要原件.我无法使用,Instant因为用户填写了事件的开始时间(事件就像约会).

要求:

  • 需要能够>, <, >=, <=, ==, …

datetime hibernate jpa java-date jpa-2.2

18
推荐指数
2
解决办法
3606
查看次数

标签 统计

datetime ×1

hibernate ×1

java-date ×1

jpa ×1

jpa-2.2 ×1