首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

当spring boot中的某些列为空时,@LastModifiedDate不会更新

在Spring Boot中,@LastModifiedDate注解是JPA提供的注解之一,用于在实体类的某个字段被修改时自动更新该字段的值为当前时间。但是如果某些列为空,则@LastModifiedDate注解不会触发更新操作。

@LastModifiedDate注解一般用于记录实体对象的最后修改时间。它的作用是在实体对象被更新时,自动将@LastModifiedDate注解所标注的字段更新为当前时间。通常情况下,该注解会在每次更新实体对象时被触发。

然而,当某些列为空时,@LastModifiedDate注解不会触发更新操作。这是因为在JPA的默认行为中,如果某些列为空,JPA会忽略对该实体对象的更新操作,从而导致@LastModifiedDate注解无法触发更新。

为了解决这个问题,可以使用@PreUpdate注解来代替@LastModifiedDate注解。@PreUpdate注解可以在实体对象被更新之前执行一段自定义的逻辑,这样可以实现在某些列为空时也能更新@LastModifiedDate字段的功能。

使用@PreUpdate注解的方式如下所示:

代码语言:txt
复制
@Entity
@Table(name = "your_table")
public class YourEntity {

    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    private Long id;

    // 其他字段...

    @Column(name = "last_modified_date")
    private LocalDateTime lastModifiedDate;

    // 其他字段的getter和setter...

    @PreUpdate
    public void updateLastModifiedDate() {
        this.lastModifiedDate = LocalDateTime.now();
    }
}

在上述代码中,我们使用@PreUpdate注解标注了一个名为updateLastModifiedDate的方法,该方法在实体对象更新之前被执行,将lastModifiedDate字段更新为当前时间。

对于Spring Boot中的其他问题和知识点,请参考腾讯云的文档和相关产品:

  1. Spring Boot官方网站:https://spring.io/projects/spring-boot
  2. 腾讯云云计算产品:https://cloud.tencent.com/product
  3. 腾讯云服务器:https://cloud.tencent.com/product/cvm
  4. 腾讯云数据库:https://cloud.tencent.com/product/cdb
  5. 腾讯云云原生应用引擎:https://cloud.tencent.com/product/tke
  6. 腾讯云人工智能服务:https://cloud.tencent.com/product/ai
  7. 腾讯云物联网开发平台:https://cloud.tencent.com/product/iotexplorer
  8. 腾讯云移动开发平台:https://cloud.tencent.com/product/mapp
  9. 腾讯云对象存储服务:https://cloud.tencent.com/product/cos
  10. 腾讯云区块链服务:https://cloud.tencent.com/product/bcs
  11. 腾讯云元宇宙服务:https://cloud.tencent.com/product/metaverse
页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

Maven工程搭建spring boot+spring mvc+JPA

添加Spring boot支持,引入相关包: 1、maven工程,少不了pom.xml,spring boot引入可参考官网: org.springframework.boot...spring mvc 和jpa,以及mysql数据库驱动jar; 编写启动类,并加装配置文件: 1、启动类如下: import org.springframework.boot.SpringApplication...classpath外边,方便在不重新打包情况下修改,spring boot工程一般都打成jar包: import java.io.File; import java.io.FileInputStream...,update表示实体类属性发生变化时,表结构跟着更新, 这里我们也可以取值create,这个create表示启动时候删除上一次生成表,并根据实体类重新生成表, 这个时候之前表数据就会被清空...;还可以取值create-drop,这个表示启动根据实体类生成表,但是sessionFactory关闭时候表会被删除; validate表示启动验证实体类和数据表是否一致;none表示啥都不做。

43610

Spring Boot,MySQL,JPA,Hibernate Restful CRUD API 教程

它彻底减少了Spring项目所需要配置时间。 如果你以前并没有用过Spring Boot,而且想快速开始Spring Boot开发,那么这篇博文将会是非常不错选择。...查看目录结构 下面就是Note taking 应用目录结构(不要问我怎么不翻译项目名字了) 让我们来详细了解一下某些重要文件和目录吧。...数据库结构发生变动时候,会自动更新数据库结构,添加不存在字段,不会删除缺少字段。...我们Note 模型有如下几个字段: id:主键,并且自增 title:笔记标题(不能为) content: 笔记内容(不能为) createAt: 笔记创建时间 updateAt: 笔记更新时间...你可以定义多个属性,例如name(名字),length(长度),nullable(可为),updateable(可更新)等等。

2K20
  • Spring Data JPA 自动保存操作人 操作时间等

    有些业务数据需要对数据创建人、创建时间、最后更新人和最后更新时间进行记录。如果使用Spring Data Jpa做数据新增或更新,可实现自动保存这些信息而不需要显式设置对应字段值。...:标记数据最近一次修改日期属性 依赖引用 使用Spring Data JPA要引用依赖spring-boot-starter-data-jpa org.springframework.boot...,系统会自动获取操作系统时间作为创建时间和修改时间。...对于创建人或最后修改人,审计过程会获取当前登录系统用户信息,未登录情况下,需要指定默认操作,可通过实现AuditorAware类来实现。..., JpaRepository { } 经过以上步骤再使用UserRepository保存User信息,就会自动更新创建人,创建时间,更新人和更新时间者四个字段

    1.5K30

    面试官:如何实现多级缓存?

    冗余设计是在系统或设备完成任务起关键作用地方,增加一套以上完成相同功能功能通道(or 系统)、工作元件或部件,以保证该部分出现故障,系统或设备仍能正常工作,以减少系统或者设备故障概率,提高系统可靠性...例如,飞机设计,飞机正常运行只需要两个发动机,但在每台飞机设计可能至少会设计四个发动机,这就有冗余设计典型使用场景,这样设计目的是为了保证极端情况下,如果有一个或两个发动机出现故障,不会因为某个发动机故障而引起重大安全事故...2.多级缓存概述缓存功能设计也是一样,我们在高并发系统通常会使用多级缓存来保证其高效运行,其中多级缓存就包含以下这些:浏览器缓存:它实现主要依靠 HTTP 协议缓存机制,浏览器第一次请求一个资源...客户端发起请求,会携带上先前接收到 ETag,服务器根据 ETag 判断资源是否已更新,若未更新则返回 304 Not Modified 状态码,通知浏览器继续使用本地缓存,设置如下:String...();response.setDateHeader("Last-Modified", lastModifiedDate);整体配置在 Spring Web 框架,可以通过 HttpServletResponse

    57110

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

    操作数据库映射实体类,通常需要记录createTime和updateTime,如果每个对象新增或修改去都去手工操作创建时间、更新时间,会显得比较繁琐。...@CreatedDate、@LastModifiedDate、@CreatedBy、@LastModifiedBy前两个注解就是起这个作用,后两个是设置修改人和创建人,这里先不讨论。...首先,我们很多实体类都是需要创建时间和更新时间,我们不想在每个实体类里都去定义这两个字段,那么我们把它抽取到基类,让实体类去继承它。...做完这些,我们来测试一下,新建个Springboot项目,配置一下数据库信息 spring: jpa: database: mysql show-sql: true hibernate...然后试试update,将上面的update注释放开。 ? 可以看到更新时间也自动修改了。 需注意,如果你没有修改任何字段值的话,即便走了save方法,updateTime也是不会更改

    4.9K50

    一个迟来赞,送给JPA。AbstractEntity需要准备些什么?

    关系型数据库其实很讨人厌,尤其是在你使用数据库驱动开发模式。需要首先把表给创建好了,然后再使用代码生成器反向生成一堆几乎无法可读代码。字段有变更时候,又是一番折腾。...标注为@MappedSuperclass类将不是一个完整实体类,不会映射到数据库表,但是它属性都将映射到子类数据库字段。放在这里再合适不过了。...当我们判断实体ID为时候,才使用雪花算法构造一个新ID;否则使用实体原来设置好ID,保持不变。 为什么这样做?因为这是有需求。.../** * 创建时间 */ @CreatedDate private Date createdDate; /** * 更新时间 */ @LastModifiedDate private Date lastModifiedDate...所以这个系列还有@CreatedBy注解,用来标注是谁创建。你需要在代码组装它们,比如下面的代码,就是从Spring Sercurity获取用户信息。

    1.5K10

    Spring Data JPA 时间注解:@CreatedDate 和 @LastModifiedDate

    选择 Spring Data JPA 框架开发,常用在实体和字段上注解有@Entity、@Id、@Column等。在表设计规范,通常建议保留有两个字段,一个是更新时间,一个是创建时间。...Spring Data JPA 提供了相应时间注解,只需要两步配置,就可以帮助开发者快速实现这方面的功能。...在实体类上加上注解 @EntityListeners(AuditingEntityListener.class),在相应字段上添加对应时间注解 @LastModifiedDate 和 @CreatedDate...updatable = false, nullable = false) private Date createTime; // 省略getter和setter 在Application启动类添加注解...Data JPA 还提供 @CreatedBy 和 @LastModifiedBy 注解,用于保存和更新当前操作用户信息(如id、name)。

    6.2K30

    年少不知编制香,错把技术当成宝。

    BlockingQueue 代表是线程安全队列,不仅可以由多个线程并发访问,还添加了等待/通知机制,以便在队列为阻塞获取元素线程,直到队列变得可用,或者在队列满阻塞插入元素线程,直到队列变得可用...队列容器已满,生产者线程会被阻塞,直到队列未满;队列容器为,消费者线程会被阻塞,直至队列非为止。...spring boot自动装配 在 Spring ,自动装配是指容器利用反射技术,根据 Bean 类型、名称等自动注入所需依赖。...在 Spring Boot ,开启自动装配注解是@EnableAutoConfiguration。...,通过这种方式,Spring Boot 能够智能地配置 bean,并且只有当这些 bean 实际需要才会被创建和配置。

    9010

    重磅 Spring Boot 2.1.4 正式版发布!

    期待已久Spring Boot 2.1.4 RELEASE版本已于今天四月初正式发布!...Spring Boot版本很多,作为使用Spring Boot技术人而言,版本选择也尤为重要 登录 官网 不难发现 Spring Boot已默更新Spring Boot 2.1.4版本(RELEASE...任何框架版本选取建议使用稳定版本(RELEASE版本),切勿使用SNAPSHORT版本 SNAPSHORT:代表不稳定、尚处于开发版本,快照版本,依赖库jar正处于开发阶段,会被经常被更新...设置为false#16332不会禁用序列化 Kafka Streams自动配置应该只配置默认流构建器#16329 无法使用标准属性#16298禁用日志文件端点 如果在另一个属性源#16290重写了集合...Web和SQL相关记录器#16018 使用Maven构建胖jar不会将META-INF / .kotlin_module文件重新打包到BOOT-INF / classes#16004 仅Gradle

    1.3K30

    Spring Data JPA 时间注解:@CreatedDate 和 @LastModifiedDate

    选择 Spring Data JPA 框架开发,常用在实体和字段上注解有@Entity、@Id、@Column等。在表设计规范,通常建议保留有两个字段,一个是更新时间,一个是创建时间。...Spring Data JPA 提供了相应时间注解,只需要两步配置,就可以帮助开发者快速实现这方面的功能。...在实体类上加上注解 @EntityListeners(AuditingEntityListener.class),在相应字段上添加对应时间注解 @LastModifiedDate 和 @CreatedDate...updatable = false, nullable = false) private Date createTime; // 省略getter和setter 在Application启动类添加注解...Data JPA 还提供 @CreatedBy 和 @LastModifiedBy 注解,用于保存和更新当前操作用户信息(如id、name)。

    4.3K10

    使用Spring Data 和 Spring Data JPA简化数据访问操作

    在这篇文章,我们将深入探讨 Spring Data、它优点以及如何像专业人士一样使用它 说到 Spring 应用程序数据访问,开发人员经常会遇到 "Spring Data "和 "Spring...在这篇文章,我们将讨论常见疑问,并提供对 Spring Data 和 Spring Data JPA 清晰理解。...什么是 Spring Data,他能解决什么问题 Spring Data 是一个综合性项目,致力于简化基于 Spring 应用程序数据访问。...项目依赖于 JPA 并且主要涉及关系数据库Spring Data JPA 是理想选择。...1.与CRUD方法存储库接口: Spring Data JPA提供了存储库接口,其中包括常见CRUD(创建、读取、更新、删除)方法,使得无需编写显式SQL查询即可轻松执行这些操作。

    34240

    JavaReference类使用

    只有在内存不足,系统则会回收软引用对象,如果回收了软引用对象之后仍然没有足够内存,才会抛出内存溢出异常。...在>3.2.3有这么一句话 为一个对象设置虚引用关联唯一目的就是能在这个对象被收集器回收收到一个系统通知。...要注意是,虚引用必须和引用队列关联使用,垃圾回收器准备回收一个对象,如果发现它还有虚引用,就会把这个虚引用加入到与之关联引用队列。...另外从ReferenceQueue这个名字也可以看出,它是一个队列,当我们调用它poll()方法时候,如果这个队列不是队列,那么将返回队列前面的那个Reference对象。...如果队列为,将返回一个null,否则该方法返回队列前面的一个Reference对象。

    70610

    Spring Data JPA系列2:快速在SpringBoot项目中熟练使用JPA

    -- 数据库相关操作 --> org.springframework.boot spring-boot-starter-data-jpa...但是,某些比较大型项目里面,我们可能会封装一个common jar作为项目公共依赖,然后再分出若干子项目,每个子项目里面依赖common jar,这个时候如果想要加载common jar里面定义Entity...=true # 控制是否可以基于程序Entity定义自动创建或者修改DB中表结构 spring.jpa.properties.hibernate.hbm2ddl.auto=update # 控制是否打印运行时...控制打印SQL语句 spring.jpa.show-sql=true 如果设置为true,则会在日志打印每次DB操作所执行最终SQL语句内容,这个比较适合开发过程问题定位分析,生产环境上建议关闭...---- 补充 Spring Data JPA作为Spring Data对于关系型数据库支持一种框架技术,属于ORM一种,通过得当使用,可以大大简化开发过程对于数据操作复杂度。

    1.5K40

    SpringBoot二十个注解

    注解后,返回结果则不会被解析为路径而是直接写入HTTP Response Body 。...,其是负责URL 到Controller 具体函数映射;此外,该注解后括号内经常会使用如下六个属性: param:指定请求request 必须包含某些参数,否则不处理该方法; header...; 6: produces:指定返回内容类型,设置该属性后仅request 请求头中Accept 类型包含该制定类型才会返回,需谨慎。...Boot 自动配置注解,其会根据项目中添加依赖自动配置Spring 应用;比如Spring Boot 自动配置内嵌tomcat 端口为8080;还有自动载入应用程序所需所有Bean,这依赖于Spring...(required=false),就算找不到bean 也不报错,允许注入为

    52630

    深入剖析JavaArrayBlockingQueue底层实现与源码分析

    所以呀,养成先点赞后阅读好习惯,别被干货淹没了哦~ 本文收录于 《Spring Boot从入门到精通》 ,专门攻坚指数提升,2023 年国内最系统+最强(更新)。...列为,从队列获取元素操作将会被阻塞,直到队列中出现新元素;队列满,向队列插入元素操作也会被阻塞,直到之前元素被取出或者队列被清空。...在构造函数,我们可以看到该类使用了一个Object类型数组来作为队列底层数据结构,同时还创建了两个Condition对象来分别表示队列为和队列已满情况。   ...如果队列为,则调用 notEmpty.await() 方法使线程等待。 如果队列不为,则调用 extract() 方法删除队列元素并返回。 释放锁。   ...在这个过程,因为ArrayBlockingQueue具有阻塞特性,即队列已满,向队列添加元素线程会被阻塞,直到队列中有空余位置;列为,从队列取出元素线程会被阻塞,直到队列中有元素可取

    32331
    领券