当前位置: 首页 > news >正文

springboot jpa Instant

背景:
springboot,jpa ,达梦

事情的起源是项目使用了Instant类型(天生是UTC时间),然而我们是东八区,前端,后端获取的时间戳都是东八区的时间。

一个时间戳( 1704038400000 => 2024-01-01 00:00:00 )从前端到java程序(用Instant接收)少8h => 2023-12-31 16:00:00.000 ,达梦入库直接入库没做处理。数据库保存的就是 2023-12-31 16:00:00.000 。

Mysql不会存在该问题,因为mysql的驱动支持了Instant类型,会自动加8h。

因此使用下面的代码解决该问题

@Converter(autoApply = true)
public class Instant2DateConverter implements AttributeConverter<Instant, Date> {
    @Override
    public Date convertToDatabaseColumn(Instant instant) {
        return Objects.isNull(instant) ? null : new Date(instant.toEpochMilli());
    }

    @Override
    public Instant convertToEntityAttribute(Date date) {
        return Objects.isNull(date) ? null : Instant.ofEpochMilli(date.getTime());
    }
}

确保Entity被扫描到,Entity需要被 Spring 或 JPA 提供者(如 Hibernate)扫描到,转换器类才能生效。

@EntityScan("cn.com.sample")

相关文章:

  • Dubbo(22)如何配置Dubbo的服务提供者?
  • 【LeetCode】算法详解#2 ---和为k的子数组
  • 当AI代写作业成为常态:重构智能时代的教育范式
  • 关于JVM和OS中的栈帧的区别和内存浅析
  • mac m1/m2/m3 pyaudio的安装
  • 前端开发学习路线完整指南
  • Mysql-DCL
  • libpng-1.6.47-windows编译
  • IOS奔溃日志分析-克魔ios开发助手实战-以支付宝奔溃日志为例
  • 论工作中的学习
  • 物联网系统集成“教学+实训”实验室解决方案
  • Python定时任务深度剖析:Schedule库的线程与超时应对策略
  • 【django】2-2 (django配置) 数据库配置、缓存配置
  • QT登录注册模块(客户端)
  • Java项目如何打jar包?
  • 算法--递归、搜索与回溯
  • 特征降维
  • WebAssembly,突破前端性能优化的方案
  • Windows11系统下python虚拟环境管理独家心得
  • 学习threejs,使用多面体(IcosahedronGeometry、TetrahedronGeometry、OctahedronGeometry等)
  • 做网站能申报只是产权么/长春网站建设技术托管
  • 今日廊坊疫情最新消息/厦门seo顾问
  • 帮人做分销网站违法么/网站优化公司
  • 海南哪家公司做网站做的好/搜索推广代运营
  • 可以用手机做网站吗/数字营销课程
  • 北京网络营销推广公司/seo关键词优化软件app