当前位置: 首页 > 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")
http://www.dtcms.com/a/101858.html

相关文章:

  • 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等)
  • ESP32-CAM对接阿里云平台数据透传
  • 文件 I/O 系统调用的内部机制
  • C语言数据结构:队列的操作实现
  • 【算法学习计划】贪心算法(中)
  • INFINI Console 极限控制台密码忘记了,如何重置?
  • 本科中厂Java后端干两年半想换岗,担心就业面和技术门槛如何规划未来?
  • Docker:ERROR [internal] load metadata for docker.io/library/java:8-alpine问题解决
  • 漂流瓶与灯塔的约定——两台电脑的跨海通信物语
  • 程序员面试金典 17.18 -- 摩尔投票法
  • MySQL 高效 SQL 使用技巧详解