作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我有以下类描述片段:
...
@Column(name = "invalidate_token_date")
@Temporal(TemporalType.TIMESTAMP)
private LocalDateTime invalidateTokenDate;
....
@Temporal
不支持
LocalDateTime.
最佳答案
从 2.2 版开始,JPA 支持映射 Java 8 日期/时间 API,例如 LocalDateTime
, LocalTime
, LocalDateTimeTime
, OffsetDateTime
或 OffsetTime
.
此外,即使使用 JPA 2.1,Hibernate 5.2 默认也支持所有 Java 8 日期/时间 API。
在 Hibernate 5.1 和 5.0 中,您必须添加 hibernate-java8
Maven 依赖。
因此,假设我们有以下实体:
@Entity(name = "UserAccount")
@Table(name = "user_account")
public class UserAccount {
@Id
private Long id;
@Column(name = "first_name", length = 50)
private String firstName;
@Column(name = "last_name", length = 50)
private String lastName;
@Column(name = "subscribed_on")
private LocalDateTime subscribedOn;
//Getters and setters omitted for brevity
}
注意
subscribedOn
属性是
LocalDateTime
Java 对象。
UserAccount
:
UserAccount user = new UserAccount()
.setId(1L)
.setFirstName("Vlad")
.setLastName("Mihalcea")
.setSubscribedOn(
LocalDateTime.of(
2020, 5, 1,
12, 30, 0
)
);
entityManager.persist(user);
Hibernate 生成正确的 SQL INSERT 语句:
INSERT INTO user_account (
first_name,
last_name,
subscribed_on,
id
)
VALUES (
'Vlad',
'Mihalcea',
'2020-05-01 12:30:00.0',
1
)
获取
UserAccount
时实体,我们可以看到
LocalDateTime
从数据库中正确获取:
UserAccount userAccount = entityManager.find(
UserAccount.class, 1L
);
assertEquals(
LocalDateTime.of(
2020, 5, 1,
12, 30, 0
),
userAccount.getSubscribedOn()
);
关于hibernate - 如何将 Java 8 LocalDateTime 与 JPA 和 Hibernate 一起使用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27750026/
我是一名优秀的程序员,十分优秀!