如何在 Hibernate/JPA 中使用 Java 8 Date 库? [复制]
Posted
技术标签:
【中文标题】如何在 Hibernate/JPA 中使用 Java 8 Date 库? [复制]【英文标题】:How to use Java 8 Date library with Hibernate/JPA? [duplicate] 【发布时间】:2017-10-10 16:45:34 【问题描述】:如何为我的 POJO 使用日期库?
我可以使用我的代码:
@Data
@Entity
@Table(name = "PERSON")
public class Person implements Serializable
private static final long serialVersionUID = -8041031461422721556L;
@Id
@Column(name = "PERSON_ID")
private Long id;
@Column(name = "NAME")
private String name;
@Column(name = "DOB")
private LocalDate dob;
我正在使用java.time.LocalDate
类型。
【问题讨论】:
errm,它是 JPA 2.2 的一部分。您的提供商还不支持 JPA 2.2 吗? 对于 Hibernate,请参阅重复链接的 second answer。 【参考方案1】:目前 Hibernate/JPA 不兼容 Java 8 Date 库,但您只需要制作一个 AttributeConverter 即可使用该库:
对于 TIMESTAMP 类型,您可以使用此转换器:
@Converter(autoApply = true)
public class LocalDateTimeAttributeConverter implements AttributeConverter<LocalDateTime, Timestamp>
@Override
public Timestamp convertToDatabaseColumn(LocalDateTime datetime)
return datetime == null ? null : Timestamp.valueOf(datetime);
@Override
public LocalDateTime convertToEntityAttribute(Timestamp timestamp)
return timestamp == null ? null : timestamp.toLocalDateTime();
对于 DATE 类型,您可以使用此转换器:
@Converter(autoApply = true)
public class LocalDateAttributeConverter implements AttributeConverter<LocalDate, Date>
@Override
public Date convertToDatabaseColumn(LocalDate date)
return date == null ? null : Date.valueOf(date);
@Override
public LocalDate convertToEntityAttribute(Date date)
return date == null ? null : date.toLocalDate();
对于 TIME 类型,您可以使用此转换器:
@Converter(autoApply = true)
public class LocalTimeAttributeConverter implements AttributeConverter<LocalTime, Time>
@Override
public Time convertToDatabaseColumn(LocalTime time)
return time == null ? null : Time.valueOf(time);
@Override
public LocalTime convertToEntityAttribute(Time time)
return time == null ? null : time.toLocalTime();
【讨论】:
以上是关于如何在 Hibernate/JPA 中使用 Java 8 Date 库? [复制]的主要内容,如果未能解决你的问题,请参考以下文章
如何强制初始化 Hibernate JPA 代理以在 JSON 调用中使用它
如何在 Hibernate JPA 中添加可编程的实体侦听器
如何使用 Hibernate JPA 和 Spring Framework 启用加载时间/运行时编织
如何使用 @ID 和 @GeneratedValue 从 Hibernate + JPA 中的序列中获取 Oracle 生成的值