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

SpringBoot小白之JPA自动设置创建时间和更新时间

大无语死了,SpringBoot发展了这么久,国内资料还这么少,对小白真的太不友好了

找个JPA自动设置创建时间,更新时间的资料都是一大堆麻烦的步骤,要么就不全。。。

前言

进入正题,本文提供了两种简单的解决方案,用来自动设置记录的创建时间和更新时提供了两种

方案1

使用hibernate库的注解@CreationTimestamp和@UpdateTimestamp

支持多种时间类型:

java.time.LocalDateTime

java.time.LocalDate

java.time.LocalTime

java.time.Instant

java.util.Date

java.lang.Long, long

代码参考

import org.hibernate.annotations.CreationTimestamp

import org.hibernate.annotations.UpdateTimestamp

// ...

@CreationTimestamp

var createdAt: Date?=null,

@UpdateTimestamp

var updatedAt: Date?=null

仅此而已。

方案2

使用springframework库的注解@CreatedDate和@LastModifiedDate

该方案相比于方案1要稍微复杂一些

使用AuditingEntityListener注解Entry类

使用EnableJpaAuditing注解Application类

创建Entry字段

import org.springframework.data.annotation.CreatedDate

import org.springframework.data.annotation.LastModifiedDate

// ...

@CreatedDate

var createdAt: Date?=null,

@LastModifiedDate

var updatedAt: Date?=null

bug: 通过指定id整体更新时,create_at会被置为null

这里会不会是操作违规,不能整体更新?

解决方案

在插入数据的时候,先判断一下是否存在,如果存在就把旧的create_at值赋给新的实体

其中的变量根据你自己的情况相应更改

if(newInfo.id!=null && infoRepository?.existsById(newInfo.id!!)==true){

newInfo.createdAt = infoRepository?.findById(newInfo.id!!)?.orElseThrow()?.createdAt

}

  • 发表于:
  • 原文链接https://page.om.qq.com/page/O9tw2WWoP7EKr9fgeTAcDI0A0
  • 腾讯「腾讯云开发者社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。
  • 如有侵权,请联系 cloudcommunity@tencent.com 删除。

扫码

添加站长 进交流群

领取专属 10元无门槛券

私享最新 技术干货

扫码加入开发者社群
领券