Jpa配置实体类创建时间更新时间自动赋值,@CreateDate,@LastModifiedDate

article/2025/8/29 11:49:14

操作数据库映射实体类时,通常需要记录createTime和updateTime,如果每个对象新增或修改去都去手工操作创建时间、更新时间,会显得比较繁琐。

Springboot jpa提供了自动填充这两个字段的功能,简单配置一下即可。@CreatedDate、@LastModifiedDate、@CreatedBy、@LastModifiedBy前两个注解就是起这个作用的,后两个是设置修改人和创建人的,这里先不讨论。

首先,我们的很多实体类都是需要创建时间和更新时间的,我们不想在每个实体类里都去定义这两个字段,那么我们把它抽取到基类中,让实体类去继承它。

package com.tianyalei.testautotime.entity;import org.springframework.data.annotation.CreatedDate;
import org.springframework.data.annotation.LastModifiedDate;
import org.springframework.data.jpa.domain.support.AuditingEntityListener;import javax.persistence.*;/*** Created by wuwf on 17/4/21.*/
@MappedSuperclass
@EntityListeners(AuditingEntityListener.class)
public abstract class BaseEntity {@Id@GeneratedValue(strategy = GenerationType.AUTO)protected Integer id;@CreatedDateprivate Long createTime;@LastModifiedDateprivate Long updateTime;public Integer getId() {return id;}public void setId(Integer id) {this.id = id;}public Long getCreateTime() {return createTime;}public void setCreateTime(Long createTime) {this.createTime = createTime;}public Long getUpdateTime() {return updateTime;}public void setUpdateTime(Long updateTime) {this.updateTime = updateTime;}
}
AuditingEntityListener标签开启后,下面的时间标签才会生效。

然后还需要在启动类加上@EnableJpaAuditing注解。

做完这些,我们来测试一下,新建个Springboot项目,配置一下数据库信息

spring:jpa:database: mysqlshow-sql: truehibernate:ddl-auto: updatedatasource:type: com.alibaba.druid.pool.DruidDataSourcedriver-class-name: com.mysql.jdbc.Driverurl: jdbc:mysql://localhost:3306/testusername: rootpassword:

新建个普通的实体类。

package com.tianyalei.testautotime.entity;import javax.persistence.Entity;@Entity
public class Post extends BaseEntity {private String title;public String getTitle() {return title;}public void setTitle(String title) {this.title = title;}
}
测试类:

import com.tianyalei.testautotime.entity.Post;
import com.tianyalei.testautotime.repository.PostRepository;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.test.context.SpringBootTest;
import org.springframework.test.context.junit4.SpringRunner;@RunWith(SpringRunner.class)
@SpringBootTest
public class TestautotimeApplicationTests {@AutowiredPostRepository postRepository;@Testpublic void save() {Post post = new Post();post.setTitle("title0");postRepository.save(post);}//	@Test
//	public void update() {
//		Post post = postRepository.findOne(1);
//		post.setTitle("title1");
//		postRepository.save(post);
//	}
}
先试试新增。

可以看到已经被自动赋值了。

然后试试update,将上面的update的注释放开。

可以看到更新时间也自动修改了。

需注意,如果你没有修改任何字段的值的话,即便走了save方法,updateTime也是不会更改的。




http://chatgpt.dhexx.cn/article/272DkPpV.shtml

相关文章

win10如何关闭自动更新及修改更新时间

关于win10如何关闭自动更新,有以下三个方法,但其效果明显不同。 当然,可用度最高的肯定放到最前面。 其中方法一实用性最强,方法二有时候没什么用,方法三可以延缓较长一段时间更新,方法四可以设置更新时间…

mybatis自动生成更新时间和创建时间

开发中,每次修改数据或者添加一条数据都要手动改变一次创建时间或者更新时间,有一说一挺麻烦的 数据表里面的创建时间和更改时间字段 更新update和insert要想自动生成的话实体类要加上TableField 然后创建MyMetaObjectHandler类,实现Meta…

Ubuntu修改时区和更新时间

更新时区 先查看当前系统时间 rootubuntu:/# date -R Thu, 12 Aug 2021 01:41:48 0000 结果时区是:-0000 我需要的是东八区,这儿显示不是,所以需要设置一个时区 运行tzselect tzselect在这里我们选择亚洲 Asia,确认之后选择中…

MySQL 设置 创建时间 和 更新时间

在实际应用中,我们时常会需要用到创建时间和更新时间这两个字段,下面记录一下: 第一种 : 命令行创建(推荐) CREATE TABLE user_info (uid varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NOT…

MySQL中创建时间和更新时间的自动更新

一、需求 当新增记录的时候,MySQL自动将系统的当前时间 set 到创建时间和更新时间这两个字段中。 当更新记录的时候,MySQL 只 update 更新时间字段的时间,而不修改创建时间字段对应的值。 二、方案 找到表中对应的创建时间和更新时间的字段…

Mysql设置自动更新时间

假设建表包括如下字段: id:主键ID create_time: 创建时间 update_time: 修改时间 如何创建table可以使得: 在插入记录时create_time、update_time默认为当前时间;在修改记录时update_time自动更新为当前时间; 建表语…

postgresql设置自动更新时间方法

在我们日常开发中,在设计数据库字段的时候不可避免的都要created_time(创建时间)以及updated_time(修改时间)两个时间戳字段,作用大家也都一目了然。下面将为大家详细介绍两个字段的如何去设置来达到你想要…

centos 7 更新时间和更新时区

使用 date 命令 查看当前centos7服务器的时间,发现当前时间与实际实际不同步。 1、下载ntpdate工具,使用该工具可以与时间服务器同步。 yum -y install ntp ntpdate 2、设置系统时间与网络时间同步。 ntpdate cn.pool.ntp.org 3.将系统时间写入硬件时间…

阿里国际站各数据更新时间汇总

2B平台运营 Michael Dai 1个月前 (11-10) 71次浏览 2个评论 扫描二维码 [编辑] 阿里国际站各数据更新时间汇总 昨天下午在查看关键词花费时突然发现已经过了下午3点了,但是关键词的推广计划没有重新开始,这时我才意识到直通车各计划的更新时间应该开…

MySQL中更新时间字段的更新时点问题

我们在设计表时,通常为了记录数据插入和更新的时间,会定义两个字段,create_time/insert_time和update_time,按照需求,记录插入的时间,会存储到create_time/insert_time字段中,记录更新的时间&am…

hexo添加文章更新时间

修改&#xff08;博客主目录&#xff09;/themes/next/layout/_macro/post.swig 文件&#xff0c;在<span class"post-time">...</span>标签后添加 {%if post.updated and post.updated > post.date%}<span class"post-updated"> |…

win10 更新计算机时间,win10更新时间太长怎么回事_windows10更新时间太久解决教程...

在使用win10系统的时候&#xff0c;经常会需要电脑进行更新&#xff0c;而我们会发现每次更新都会耗时1-2个小时时间。让人等的不耐烦&#xff0c;遇到win10更新时间太长怎么回事呢&#xff1f;接下来给大家分享一下windows10更新时间太久解决教程吧。 具体方法如下&#xff1a…

java插入或者修改数据自动更新时间字段

** 方法一:最简单 ** 在sqlyog界面打开相关的表 在要时间"更新"字段打勾 测试成功 每次修改表中数据 时间字段都会更新 ** 方法二:直接获取当前时间set到数据库 ** 例如 Transactional Override public int update(Enterprise enterprise) throws Exception{en…

oracle查表的更新时间,Oracle 查询倒叙查询所有表更新时间

先测试独立一张表的更新时间sql 可用不可用 select max(ora_rowscn), to_char( scn_to_timestamp(nvl(max(ora_rowscn),1002267)),yyyy-mm-dd hh24:mi:ss) from DM00_HSBM8 t; select max(ora_rowscn), to_char( scn_to_timestamp(nvl(max(ora_rowscn),1002267)),yyyy-mm-dd hh…

mysql 自动更新时间_如何设置mysql自动更新创建时间和更新时间

做项目时,希望: 新增记录时,mysql自动将系统的当前时间set到创建时间和更新时间这两个字段中。 更新记录时,mysql只update更新时间字段的时间。 设置mysql自动更新创建时间和更新时间的方法: 找到表中创建时间和更新时间的字段,将其修改为下列代码。 创建时间字段 creat_…

IDEA修改错误提示颜色

File—>Settings —>Editor —>Color Scheme—>General —>Errors and Warning—>Error Unused symbol 未使用方法,属性等 error 错误的属性

ts和vscode设置中文错误提示

ts设置中文错误提示的话&#xff0c;直接命令行设置就行了 yarn tsc --locale zh-CN vscode设置中文错误提示需要打开设置页面&#xff0c;搜索“typescript local”&#xff0c;然后设置中文就行了

element中表单错误提示信息被遮盖

提示信息被遮盖 解决方法 可以给form-item加一个特定的class&#xff0c;不影响其他的提示框&#xff0c;然后设定width&#xff0c;可以把所有内容显示。 代码 vue的template代码 <el-form-item label"用户微信" prop"userWeChat" class"weix…

在vscode中打开错误提示

在vscode中打开错误提示 首先打开vscode&#xff0c;找到左下角的小齿轮点击选择setting 在搜索框中输入error Squiggles回车键找到extensions下面c/c中的error Squiggles&#xff0c;如使用其他语言找到自己对应的语言就行&#xff1b;并分别点击user&#xff0c;workspace&…

HTML5自定义表单验证错误提示信息

有如下HTML结构&#xff1a; <form action"ok.html"><input type"text" pattern"\d{1,3}" required id"myinput"><p><input type"submit" value"提交"></p> </form> 当提…