JPA编程使用注解@LastModifiedDate,自动更新修改时间字段

news2024/11/26 19:57:57

一、背景

jpa编程中,我们一般会设计以下五个字段:
在这里插入图片描述
在新增记录的时候,无需对创建时间和修改时间进行赋值。

此外,你还得在类上,增加注解@EntityListeners(AuditingEntityListener.class)。

@EntityListeners(AuditingEntityListener.class)
public class Lecture {

    @Column(name = "task_count", nullable = false, columnDefinition = "INT default 0 COMMENT '任务总数'")
    private int taskCount;
    
// 其他字段省略,本文重点对象是修改时间
    @LastModifiedDate
    @CreatedDate
    @Column(name = "modified_date", columnDefinition = "datetime DEFAULT NOW() COMMENT '修改时间'")
    private Date modifiedDate;
}

然后你在更新任务数的时候,理所当然,jpa会自动更新修改时间。

实际上,当你的任务数没有变化的时候,是不会更新其修改时间。

如果你的程序对修改时间字段是否变更,涉及到其他的业务逻辑,那么希望你引起重视,还是老实地手动给修改时间赋值吧。

二、实现

  • 修改前的代码
      Lecture lecture = lectureRepository.findById(lectureId);

      lecture.updateTaskCount(request.getTaskCount());
      lectureRepository.save(lecture);
      
    /**
     * 更新任务数.
     *
     * @param taskCount
     * @return
     */
    public boolean updateTaskCount(Integer taskCount) {
        boolean hasUpdate = false;
        if (null != taskCount && this.taskCount != taskCount) {
            this.taskCount = taskCount;
            hasUpdate = true;
        }
        return hasUpdate;
    }

这种写法,如果原本taskCount = 3, 然后你调用该方法,再save()的话,是不会自动更新修改时间。

  • 修改后的写法
      Lecture lecture = lectureRepository.findById(lectureId);
      Date refreshDate = DateUtil.date();
      lecture.updateTaskCount(request.getTaskCount(), refreshDate);
      lectureRepository.save(lecture);
            
/**
     * 更新任务数.
     *
     * @param taskCount
     * @param modifiedDate
     * @return
     */
    public boolean updateTaskCount(Integer taskCount, Date modifiedDate) {
        boolean hasUpdate = false;
        if (null != taskCount && this.taskCount != taskCount) {
            this.taskCount = taskCount;
            hasUpdate = true;
        }
        // 无论有无任务数的变更,都刷新更新时间(如果缺少下行,当没有任务数的变化,则更新时间不会刷新)
        this.modifiedDate = modifiedDate;
        return hasUpdate;
    }

三、总结

希望本文能够帮助到你,调用jpa的save()方法并不是每次都会刷新修改时间。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1167120.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

用中文编程工具给澳大利亚客户定制开发的英文版服装进销存软件应用实例

用中文编程工具给澳大利亚客户定制开发的英文版服装进销存软件应用实例 软件从2016年一直用到现在,而且开的分店也是安装的这个软件,上图是定制打印的格式。 该编程工具不但可以连接硬件,而且可以开发大型的软件。 编程系统化课程总目录及明…

Linux下的IMX6ULL——构建bootloader、内核、文件系统(四)

前言: Linux 平台上有许多开源的嵌入式linux系统构建框架(框架的意思就是工 具),这些框架极大的方便了开发者进行嵌入式系统的定制化构建,目前比较常 见的有OpenWrt, Buildroot, Yocto,等等。其中Buildroot功能强大,使用 简单&…

CY3-N3的荧光特性Cyanine3 azide星戈瑞

CY3-N3是一种荧光染料,其荧光特性通常取决于其分子结构和环境条件。CY3-N3的激发波长通常位于500到550纳米之间。这表示当暴露在具有适当激发光的条件下时,CY3-N3会吸收光并进入激发态。 CY3-N3的发射波长通常位于550到650纳米之间。这意味着在激发后&a…

Mac连接linux的办法(自带终端和iterm2)

1. 使用Mac自带终端Terminal 1.1 点击右上角的聚焦搜索,再输入终端 1.2 查找linux系统的ip地址 在虚拟机里输入如下命令,找到蓝色区域的就是ip地址 ip addr 如果没有显示ip地址,可以重新安装一下虚拟机,之后确保以太网的连接是打…

竹胶板木板片:多功能建筑模板的理想选择

竹胶板木板片作为一种多功能的建筑模板材料,在各类建筑项目中扮演着重要的角色。其防水、耐磨的特性使其成为庭院、阳台等室外空间制模的理想选择。本文将重点介绍竹胶板木板片的特点以及其在建筑模板领域的应用。 竹胶板木板片由优质的竹材制成,经过胶合…

Java中Deque栈对象的增删查(所有方法详解)

1、Deque栈的增删查方法总结 2、方法增删查 栈顶添加:push、offFirst栈尾添加:add、offer、offerLast栈顶删除:remove、pop、poll、pollFirst栈尾删除:pollLast栈顶查看:peek、peekFirst栈尾查看:peekLast…

Miniconda 使用进阶,把它添加到右键菜单中

因为最近有写 python 的需求,且我是用 Miniconda 来管理本地 python 环境的,所以就涉及到需要频繁的进入到环境的命令行中,每次都需要通过官方提供的快捷方式,然后还要一路设置环境和路径,好烦呀。因为之前添加过 Wind…

OceanMind海睿思加入江苏省勘察设计行业协会,数字化能力受勘察设计行业认可

近日,中新赛克海睿思 通过江苏省勘察设计行业协会八届五次常务理事会议审议批准,正式成为江苏省勘察设计行业协会会员单位。 江苏省勘察设计行业协会 江苏省勘察设计行业协会成立于1986年4月,是我国勘察设计行业成立协会较早的省份之一&…

HarmonyOS 数据管理与应用数据持久化(二)

通过键值型数据库实现数据持久化 场景介绍 键值型数据库存储键值对形式的数据,当需要存储的数据没有复杂的关系模型,比如存储商品名称及对应价格、员工工号及今日是否已出勤等,由于数据复杂度低,更容易兼容不同数据库版本和设备…

FreeRTOS_软件定时器

目录 1. 软件定时器简介 2. 定时器服务/Daemon 任务 2.1 定时器服务任务与队列 2.2 定时器相关配置 2.2.1 configUSE_TIMERS 2.2.2 configTIMER_TASK_PRIORITY 2.2.3 configTIMER_QUEUE_LENGTH 2.2.4 configTIMER_TASK_STACK_DEPTH 2.3 单次定时器和周期定时器 2.4 复…

在公共安全场景下,智能监控如何做到保障安全的同时又最大化地提供便利?

智能监控系统应用的场景十分广泛,其中,公共安全场所的需求尤为重要,为保障公共区域的安全,提升人民群众的归属感,增强公共场所的安全性,智慧安防EasyCVR智能视频监控系统做出了极大努力。具体细节如下&…

33 mysql find_in_set 的实现

前言 这里我们主要是来探讨一下 mysql 中 in 的使用, find_in_set 的使用 这两者 在我们实际应用中应该也是 非常常用的了 测试数据表如下 CREATE TABLE tz_test (id int(11) unsigned NOT NULL AUTO_INCREMENT,field1 varchar(16) DEFAULT NULL,field2 varchar(16) DEFAU…

MobPush智能推送:数智化运营加速用户转化

随着移动应用市场竞争日益激烈,如何保持APP用户活跃度实现商业价值成为无数APP运营者的烦恼。是继续加大力度拉新促活,用庞大的用户体量获得平台商业价值?还是加强对存量用户的精细化运营,激发存量用户付费转化实现弯道超车&#…

python爬虫实战——今日头条新闻数据获取

大家早好、午好、晚好吖 ❤ ~欢迎光临本文章 如果有什么疑惑/资料需要的可以点击文章末尾名片领取源码 第三方库: requests >>> pip install requests 第三方模块安装: win R 输入cmd 输入安装命令 pip install 模块名 (如果你觉得安装速度比较慢, 你…

【前端周报11.03】

前端周汇报11.03 那我们接着上一周的继续往下进行推进上周总结本周工作下周内容 那我们接着上一周的继续往下进行推进 上周总结 上一周的话我其实最主要的工作还是进行了一系列的调研主要的话是针对于我们未来要做的小程序的项目的,为未来开发这个小程序做好一系列…

一整套智慧工地源码,劳务实名制、施工安全管理、绿色施工、危大工程设备监测、视频AI识别功能

智慧工地系统充分利用计算机技术、互联网、物联网、云计算、大数据等新一代信息技术,以PC端,移动端,设备端三位一体的管控方式为企业现场工程管理提供了先进的技术手段。让劳务、设备、物料、安全、环境、能源、资料、计划、质量、视频监控等…

c 函数调用过程中,调用函数的栈帧一旦被修改,被调用函数则无法正确返回。( X )

当一个函数被调用时,它的栈帧会被创建并压入调用栈中。栈帧包含了函数的局部变量、参数以及返回地址等信息。当函数执行完毕后,栈帧会被弹出,返回到调用函数的位置继续执行。 下面是一个示例代码,展示了调用函数栈帧被修改但不影…

【Python_GraphicsView 学习笔记(一)】Graphics View框架的基本介绍

【Python_GraphicsView 学习笔记(一)】Graphics View框架的基本介绍 前言正文1、Graphics View框架简介2、Graphics View框架与QPainter类的区别3、Graphics View框架的三个组成部分4、场景QGraphicsScene类5、视图QGraphicsView类6、图形项QGraphicsIte…

解析电源模块功能测试项目 电源模块测试系统助力功能测试

电源测试一般包括保护特性测试、安规测试、电磁兼容测试、可靠性测试、功能测试以及其它一些特定测试。电源功能测试是评估电源质量好坏、性能、响应等的重要测试方法,也是电源的常规测试内容。 电源功能测试项目 电源功能测试是确保电源稳定性和可靠性的重要测试指…

使用android studio开发flutter应用,10分钟环境配置

1.安装flutter sdk 安装中文官网配置环境即可:安装和环境配置 - Flutter 中文文档 - Flutter 中文开发者网站 - Flutter 然后如果你的网络不好的话,可以修改flutter的源地址,将下面的变量创建成新的环境变量 FLUTTER_STORAGE_BASE_URLhttp…