- Java 双重比较
- java - 比较器与 Apache BeanComparator
- Objective-C 完成 block 导致额外的方法调用?
- database - RESTful URI 是否应该公开数据库主键?
如何将 Java 8 OffsetTime
和 OffsetDateTime
与 Hibernate 保持为正确的 SQL 类型(TIME_WITH_TIMEZONE
和 TIMESTAMP_WITH_TIMEZONE
)?
我在 a blog 中使用 EnhancedUserType
找到了 LocalTime
和 LocalDateTime
的解决方案| .
offset 数据的用户类型如何?
最佳答案
Hibernate ORM 5.3 实现了 JPA 2.2 标准。
JPA 2.2规范说明支持以下 Java 8 类型:
java.time.LocalDate
java.time.LocalTime
java.time.LocalDateTime
java.time.OffsetTime
java.time.OffsetDateTime
Hibernate ORM 支持所有这些类型,甚至更多:
java.time.ZonedDateTime
java.time.Duration
假设您有以下实体:
@Entity(name = "DateTimeEntity")
public static class DateTimeEntity {
@Id
private Integer id;
@Column(name = "duration_value")
private Duration duration = Duration.of( 20, ChronoUnit.DAYS );
@Column(name = "instant_value")
private Instant instant = Instant.now();
@Column(name = "local_date")
private LocalDate localDate = LocalDate.now();
@Column(name = "local_date_time")
private LocalDateTime localDateTime = LocalDateTime.now();
@Column(name = "local_time")
private LocalTime localTime = LocalTime.now();
@Column(name = "offset_date_time")
private OffsetDateTime offsetDateTime = OffsetDateTime.now();
@Column(name = "offset_time")
private OffsetTime offsetTime = OffsetTime.now();
@Column(name = "zoned_date_time")
private ZonedDateTime zonedDateTime = ZonedDateTime.now();
//Getters and setters omitted for brevity
}
DateTimeEntity
将有一个关联的数据库表,如下所示:
CREATE TABLE DateTimeEntity (
id INTEGER NOT NULL,
duration_value BIGINT,
instant_value TIMESTAMP,
local_date DATE,
local_date_time TIMESTAMP,
local_time TIME,
offset_date_time TIMESTAMP,
offset_time TIME,
zoned_date_time TIMESTAMP,
PRIMARY KEY (id)
)
来源:Mapping Java 8 Date/Time entity attributes with Hibernate
关于java - 如何使用 JPA 和 Hibernate 保留 OffsetTime 和 OffsetDateTime?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29211210/
为了处理 OffsetTime,我想将其转换为本地 OffsetTime。例如,如果系统默认偏移量为 +1:00,则将 14:03:04.708-01:00 转换为 16:03:04.708+01:0
我在 NodaTime 中寻找某种 OffsetTime 支持,但我没有看到任何东西。我正在接收格式为“17:13:00+10:00”的数据。我将把它视为时间偏移量,将其应用于给定日期(用户控制的日期
我正在尝试解析格式为“HHmmssZ”的日期字符串, OffsetTime.parse("115601Z", DateTimeFormatter.ofPattern("HHmmssZ")).toLoc
如何在保持时区信息不变的情况下将具有 SQL 类型的数据库值提取到 Java8 java.time.OffsetTime 和 java.time.OffsetDateTime 对象中TIME_WITH
我想将 UTC 时间转换为 localizedDateTime 或 zonedDateTime。 我有以下输入:2013-07-10 02:52:49,-44.490947,171.220966其中日
如何将 Java 8 OffsetTime 和 OffsetDateTime 与 Hibernate 保持为正确的 SQL 类型(TIME_WITH_TIMEZONE 和 TIMESTAMP_WITH
我是一名优秀的程序员,十分优秀!