欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

基于@LastModifiedDate不起作用的解決方案

 更新時(shí)間:2023年10月07日 09:10:23   作者:誰(shuí)把我名字用了!  
這篇文章主要介紹了基于@LastModifiedDate不起作用的解決方案,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教

@LastModifiedDate不起作用

在實(shí)體中添加注解 @EntityListeners(AuditingEntityListener.class)監(jiān)聽(tīng)實(shí)體變化

在自動(dòng)更新時(shí)間戳字段增加 @LastModifiedDate

在Spring boot啟動(dòng)類(lèi)增加注解 @EnableJpaAuditing啟用JPA審計(jì)(自動(dòng)填充默認(rèn)值)

如果你是使用JPA的save(實(shí)體)方法去更新數(shù)據(jù)是沒(méi)有問(wèn)題的,如果是使用SQL/JPQL語(yǔ)句就會(huì)失效。

比如:

@Query("update xxx set x = ? where x = ?")

這里提供最簡(jiǎn)單的解決辦法,語(yǔ)句里時(shí)間字段賦值CURRENT_TIMESTAMP即可。

JPA中@CreatedDate和@LastModifiedDate的使用

前些時(shí)間寫(xiě)了新項(xiàng)目,然后嘗試使用了Spring Data JPA,發(fā)現(xiàn)新世界。很多功能都可以基于注解實(shí)現(xiàn),為開(kāi)發(fā)省去了不少功夫。

關(guān)于時(shí)間的生成注解@CreatedDate和@LastModifiedDate的使用,在此記錄一下。

使用步驟

1.在實(shí)體類(lèi)上加上注解 @EntityListeners(AuditingEntityListener.class),在相應(yīng)的字段上添加對(duì)應(yīng)的時(shí)間注解 @LastModifiedDate 和 @CreatedDate。

注意:日期的類(lèi)型可以使用Date,也可以使用Long。我一般習(xí)慣用Date。

//@Data lombok注解,替我們生成getter和setter。
@Data
@Entity
@Table(name = "task")
@EntityListeners(AuditingEntityListener.class)
public class Task {
? ? /**
? ? ?* 自增主鍵
? ? ?*/
? ? @Id
? ? @GeneratedValue(strategy = GenerationType.IDENTITY)
? ? @Column(name = "id")
? ? private Integer id;
? ? /**
? ? ?* 創(chuàng)建時(shí)間
? ? ?*/
? ? @CreatedDate
? ? @Column(name = "createTime", columnDefinition = "timestamp not null default current_timestamp")
? ? private Date createTime;
? ? /**
? ? ?* 更新時(shí)間
? ? ?*/
? ? @LastModifiedDate
? ? @Column(name = "updateTime", columnDefinition = "timestamp not null default current_timestamp")
? ? private Date updateTime;
}

2.在Application啟動(dòng)類(lèi)中添加注解 @EnableJpaAuditing。

@EnableJpaAuditing
@SpringBootApplication
public class TestApplication {
? ? public static void main(String[] args) {
? ? ? ? SpringApplication.run(TestApplication.class, args);
? ? }?
}

3.除了上面提到的注解外,Spring Data JPA 還提供 @CreatedBy 和 @LastModifiedBy 注解,用于保存和更新當(dāng)前操作用戶(hù)的信息(如id、name)。

如果有這方面的需求,可以參考下面的配置實(shí)現(xiàn)

代碼如下:

@Data
@Entity
@EntityListeners(AuditingEntityListener.class)
public class Task {
? ?? ?/**
? ? ?* 自增主鍵
? ? ?*/
? ? @Id
? ? @GeneratedValue(strategy = GenerationType.IDENTITY)
? ? @Column(name = "id")
? ? private Integer id;
? ? /**
? ? ?* 創(chuàng)建時(shí)間
? ? ?*/
? ? @CreatedDate
? ? @Column(name = "createTime", columnDefinition = "timestamp not null default current_timestamp")
? ? private Date createTime;
? ? /**
? ? ?* 更新時(shí)間
? ? ?*/
? ? @LastModifiedDate
? ? @Column(name = "updateTime", columnDefinition = "timestamp not null default current_timestamp")
? ? private Date updateTime;
? ? ?/**
? ? ?* 創(chuàng)建人
? ? ?*/
? ? @CreatedBy
? ? @Column(name = "createBy", columnDefinition = "varchar(255) not null")
? ? private String createBy;
? ? /**
? ? ?* 最后修改人
? ? ?*/
? ? @LastModifiedBy
? ? @Column(name = "lastModifiedBy", columnDefinition = "varchar(255) not null")
? ? private String lastModifiedBy;
}

獲取操作員信息

/**
?* Spring Data JPA通過(guò)AuditorAware<T>接口獲取用戶(hù)信息,
?* 其中泛型T可以為String保存用戶(hù)名,也可以為L(zhǎng)ong/Integer保存用戶(hù)ID。
?* @author EvanWang
?*
?*/
@Component
public class AuditorConfig implements AuditorAware<String> {
? ? /**
? ? ?* 返回操作員標(biāo)志信息
? ? ?*
? ? ?* @return
? ? ?*/
? ? @Override
? ? public Optional<String> getCurrentAuditor() {
? ? ? ? // 這里應(yīng)根據(jù)實(shí)際業(yè)務(wù)情況獲取具體信息
? ? ? ? return Optional.of(userName);
? ? }
}

補(bǔ)充注解

Hibernate 也提供了類(lèi)似上述時(shí)間注解的功能實(shí)現(xiàn),這種方法只需要一步配置,更改為注解 @UpdateTimestamp 和 @CreationTimestamp 

代碼如下:

@Data
@MappedSuperclass
@NoArgsConstructor
@AllArgsConstructor
public class Task {
? ? @Id
? ? @GeneratedValue(strategy = GenerationType.IDENTITY)
? ? @Column(name = "id")
? ? private Integer id;
? ? @UpdateTimestamp
? ? @Column(name = "updateTime", columnDefinition = "timestamp not null default current_timestamp")
? ? private Date updateTime;
? ? @CreationTimestamp
? ? @Column(name = "updateTime", columnDefinition = "timestamp not null default current_timestamp")
? ? private Date createTime;
}

總結(jié)

以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。

相關(guān)文章

  • 使用Digester解析XML文件的三種方式小結(jié)

    使用Digester解析XML文件的三種方式小結(jié)

    Digester是apache開(kāi)源項(xiàng)目Commons中的一個(gè)子項(xiàng)目,用于解析XML文檔的工具,本文為大家整理了Digester解析XML文件的三種方式,希望對(duì)大家有所幫助
    2024-01-01
  • Java實(shí)現(xiàn)多層文件夾壓縮功能

    Java實(shí)現(xiàn)多層文件夾壓縮功能

    這篇文章主要為大家詳細(xì)介紹了如何利用Java語(yǔ)言進(jìn)行多層文件夾壓縮功能,文中的示例代碼講解詳細(xì),感興趣的小伙伴可以跟隨小編一起學(xué)習(xí)一下
    2022-08-08
  • SpringBoot邏輯異常統(tǒng)一處理方法

    SpringBoot邏輯異常統(tǒng)一處理方法

    這篇文章主要介紹了SpringBoot邏輯異常統(tǒng)一處理方法,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2019-10-10
  • idea使用war以及war exploded的區(qū)別說(shuō)明

    idea使用war以及war exploded的區(qū)別說(shuō)明

    本文詳細(xì)解析了war與warexploded兩種部署方式的差異及步驟,war方式是先打包成war包,再部署到服務(wù)器上;warexploded方式是直接把文件夾、class文件等移到Tomcat上部署,支持熱部署,開(kāi)發(fā)時(shí)常用,文章分別列出了warexploded模式和war包形式的具體操作步驟
    2024-10-10
  • 學(xué)會(huì)IDEA REST Client后就可以丟掉postman了

    學(xué)會(huì)IDEA REST Client后就可以丟掉postman了

    這篇文章主要介紹了學(xué)會(huì)IDEA REST Client后就可以丟掉postman了,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2019-12-12
  • Java使用POI導(dǎo)出Excel(二):多個(gè)sheet

    Java使用POI導(dǎo)出Excel(二):多個(gè)sheet

    這篇文章介紹了Java使用POI導(dǎo)出Excel的方法,文中通過(guò)示例代碼介紹的非常詳細(xì)。對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2022-10-10
  • java8 BigDecimal類(lèi)型的List求和方式

    java8 BigDecimal類(lèi)型的List求和方式

    這篇文章主要介紹了java8 BigDecimal類(lèi)型的List求和方式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2024-11-11
  • Java黑盒測(cè)試之nextDate函數(shù)測(cè)試

    Java黑盒測(cè)試之nextDate函數(shù)測(cè)試

    這篇文章主要介紹了Java黑盒測(cè)試之nextDate函數(shù)測(cè)試,文中有非常詳細(xì)的代碼示例,對(duì)正在學(xué)習(xí)Java黑盒測(cè)試的小伙伴們有很大的幫助哦,需要的朋友可以參考下
    2021-05-05
  • MyBatis-Plus中MetaObjectHandler沒(méi)生效完美解決

    MyBatis-Plus中MetaObjectHandler沒(méi)生效完美解決

    在進(jìn)行測(cè)試時(shí)發(fā)現(xiàn)配置的MyMetaObjectHandler并沒(méi)有生效,本文主要介紹了MyBatis-Plus中MetaObjectHandler沒(méi)生效完美解決,具有一定的參考價(jià)值,感興趣的可以了解一下
    2023-11-11
  • SpringBoot項(xiàng)目的五種創(chuàng)建方式

    SpringBoot項(xiàng)目的五種創(chuàng)建方式

    這篇文章主要介紹了SpringBoot項(xiàng)目的五種創(chuàng)建方式,文中通過(guò)圖文結(jié)合的方式講解的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作有一定的幫助,需要的朋友可以參考下
    2024-12-12

最新評(píng)論