spring-data-jpa进行更新时无法根据系统当前时间更新update_time || @DynamicUpdate和@DynamicInsert的作用

在MySQL 5.7后,时间字段通常设置为自动更新。然而,当使用JPA更新时,发现update_time未自动更新。解决方法是在实体类上添加@DynamicUpdate注解。该注解能提高数据库访问效率,只更新改动的字段,避免无用的更新操作。@DynamicUpdate默认开启,关闭则等同于不使用该注解。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >


自从mysql5.7之后,相信大家在设计数据库的时间字段时都会设计成下面这样达到自动更新的效果,非常实用。

`create_time` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
`update_time` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '修改时间',

 但是,今天在使用jpa进行更新操作的时候,却发现update_time并没有自动更新,在多次尝试之后才发现如果需要自动更新update_time,需要在jpa对于的实体类上加上@DynamicUpdate注解才可以,于是也深入研究了下这个注解,发现这个注解还有其他的作用,例如它可以提高访问数据库的效率,那么它是怎么做到的呢?下面会具体演示分析。


1. 首先我们在实体类上不加@DynamicUpdate注解进行测试。

@Entity
@Data
@NoArgsConstructor
@AllArgsConstructor
public class ProductCategory {
    @Id
    @GeneratedValue(strategy= GenerationType.IDENTITY)
    private Integer categoryId;
    private String categoryName;
    private String categoryType;
    private Date crea
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值