美文网首页框架学习时间相关操作
如何在JPA中使用LocalDate和LocalDateTime

如何在JPA中使用LocalDate和LocalDateTime

作者: 姜小码 | 来源:发表于2016-07-16 22:56 被阅读2945次

java8带来了很多新特性,其中最重要的一个特性就是新的时间和日期API。老的时间日期API存在很多问题,不过在java8中这些特性将不复存在。但是,JPA会把LocalDateLocalDateTime映射成 BLOB类型,而不是 DATETIMESTAMP

为什么JPA不支持LocalDateLocalDateTime

因为JPA2.1版本在java8之前发布,因此@Temporal注解只能用在java.util.Datejava.util.Calendar属性上。

想要在JPA中使用LocalDateLocalDateTime,可以实现Attribute Converter.

The example:

@Entity
public class MyEntity {

    @Id
    @GeneratedValue(strategy = GenerationType.AUTO)
    @Column(name = "id", updatable = false, nullable = false)
    private Long id;
    
    @Column
    private LocalDate date;
    
    @Column
    private LocalDateTime dateTime;
    
    ...
    
}

转换LocalDate

@Converter(autoApply = true)
public class LocalDateAttributeConverter implements AttributeConverter<LocalDate, Date> {
    
    @Override
    public Date convertToDatabaseColumn(LocalDate locDate) {
        return (locDate == null ? null : Date.valueOf(locDate));
    }

    @Override
    public LocalDate convertToEntityAttribute(Date sqlDate) {
        return (sqlDate == null ? null : sqlDate.toLocalDate());
    }
}

转换LocalDateTime

@Converter(autoApply = true)
public class LocalDateTimeAttributeConverter implements AttributeConverter<LocalDateTime, Timestamp> {
    
    @Override
    public Timestamp convertToDatabaseColumn(LocalDateTime locDateTime) {
        return (locDateTime == null ? null : Timestamp.valueOf(locDateTime));
    }

    @Override
    public LocalDateTime convertToEntityAttribute(Timestamp sqlTimestamp) {
        return (sqlTimestamp == null ? null : sqlTimestamp.toLocalDateTime());
    }
}

相关文章

网友评论

  • Xlanglxx:请教一下,localdate 怎么转localdateTime
    Xlanglxx:@姜小码 你知道java8 时间戳怎么转日期吗?
    Xlanglxx:@姜小码 恩 非常感谢
    姜小码:LocalDate有atTime方法
  • FredMax:谢谢,困扰了我一天。jpa惹的祸,以为是驱动问题
    FredMax:@姜小码 我数据库是datetime类型,进不去这个方法的?需要配置什么进来扫描吗?
    姜小码::blush: 嗯呢
  • 507ac6e1a2f3:不错,正好解决了我的问题,多谢了。
    姜小码:@Seed2009 :relaxed:

本文标题:如何在JPA中使用LocalDate和LocalDateTime

本文链接:https://www.haomeiwen.com/subject/izpujttx.html