最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

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

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

@LastModifiedDate不起作用

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

在自動更新時間戳字段增加 @LastModifiedDate

在Spring boot啟動類增加注解 @EnableJpaAuditing啟用JPA審計(自動填充默認值)

如果你是使用JPA的save(實體)方法去更新數(shù)據(jù)是沒有問題的,如果是使用SQL/JPQL語句就會失效。

比如:

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

這里提供最簡單的解決辦法,語句里時間字段賦值CURRENT_TIMESTAMP即可。

JPA中@CreatedDate和@LastModifiedDate的使用

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

關于時間的生成注解@CreatedDate和@LastModifiedDate的使用,在此記錄一下。

使用步驟

1.在實體類上加上注解 @EntityListeners(AuditingEntityListener.class),在相應的字段上添加對應的時間注解 @LastModifiedDate 和 @CreatedDate。

注意:日期的類型可以使用Date,也可以使用Long。我一般習慣用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)建時間
? ? ?*/
? ? @CreatedDate
? ? @Column(name = "createTime", columnDefinition = "timestamp not null default current_timestamp")
? ? private Date createTime;
? ? /**
? ? ?* 更新時間
? ? ?*/
? ? @LastModifiedDate
? ? @Column(name = "updateTime", columnDefinition = "timestamp not null default current_timestamp")
? ? private Date updateTime;
}

2.在Application啟動類中添加注解 @EnableJpaAuditing。

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

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

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

代碼如下:

@Data
@Entity
@EntityListeners(AuditingEntityListener.class)
public class Task {
? ?? ?/**
? ? ?* 自增主鍵
? ? ?*/
? ? @Id
? ? @GeneratedValue(strategy = GenerationType.IDENTITY)
? ? @Column(name = "id")
? ? private Integer id;
? ? /**
? ? ?* 創(chuàng)建時間
? ? ?*/
? ? @CreatedDate
? ? @Column(name = "createTime", columnDefinition = "timestamp not null default current_timestamp")
? ? private Date createTime;
? ? /**
? ? ?* 更新時間
? ? ?*/
? ? @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通過AuditorAware<T>接口獲取用戶信息,
?* 其中泛型T可以為String保存用戶名,也可以為Long/Integer保存用戶ID。
?* @author EvanWang
?*
?*/
@Component
public class AuditorConfig implements AuditorAware<String> {
? ? /**
? ? ?* 返回操作員標志信息
? ? ?*
? ? ?* @return
? ? ?*/
? ? @Override
? ? public Optional<String> getCurrentAuditor() {
? ? ? ? // 這里應根據(jù)實際業(yè)務情況獲取具體信息
? ? ? ? return Optional.of(userName);
? ? }
}

補充注解

Hibernate 也提供了類似上述時間注解的功能實現(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é)

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

相關文章

  • 基于SpringBoot整合SSMP的詳細教程

    基于SpringBoot整合SSMP的詳細教程

    這篇文章主要介紹了SpringBoot整合SSMP的詳細教程,通過本文學習基于SpringBoot實現(xiàn)SSMP整合的詳細代碼,需要的朋友可以參考下
    2022-08-08
  • 如何解決SpringBoot啟動時無法加載配置文件或環(huán)境變量問題

    如何解決SpringBoot啟動時無法加載配置文件或環(huán)境變量問題

    文章主要介紹了在Spring Boot項目中遇到配置文件加載失敗和資源目錄圖標異常的問題,并提供了詳細的解決步驟,解決方法包括在pom.xml文件中添加特定配置,確保資源目錄順序正確,以及注意節(jié)點的正確使用,通過這些步驟,可以有效解決資源加載問題,提高開發(fā)效率
    2024-12-12
  • Spring AOP 中@annotation的兩種寫法使用

    Spring AOP 中@annotation的兩種寫法使用

    本文介紹了Spring AOP中@annotation的兩種寫法及區(qū)別,一種只攔截方法,另一種攔截并獲取注解對象,這兩種寫法都能生效,但用途不同,選擇哪種寫法取決于具體需求
    2026-02-02
  • MyBatis Plus 查詢結(jié)果映射為空對象的問題及解決方案

    MyBatis Plus 查詢結(jié)果映射為空對象的問題及解決方案

    本文詳細探討了MyBatisPlus中查詢結(jié)果映射為空對象的問題,通過問題重現(xiàn)、原理分析和多種解決方案,幫助開發(fā)者有效應對這一問題,感興趣的朋友跟隨小編一起看看吧
    2025-12-12
  • Spring?Lifecycle?和?SmartLifecycle區(qū)別面試精講

    Spring?Lifecycle?和?SmartLifecycle區(qū)別面試精講

    這篇文章主要為大家介紹了Spring?Lifecycle和SmartLifecycle的區(qū)別面試精講,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪
    2023-10-10
  • Java多線程同步工具類CyclicBarrier的使用

    Java多線程同步工具類CyclicBarrier的使用

    本文主要介紹了Java多線程同步工具類CyclicBarrier的使用,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2023-04-04
  • Netty學習教程之Netty與Marshalling結(jié)合發(fā)送對象

    Netty學習教程之Netty與Marshalling結(jié)合發(fā)送對象

    Netty是由JBOSS提供的一個Java開源框架,之前已經(jīng)給大家簡單介紹了一些基礎與使用,下面這篇文章主要給大家介紹了關于Netty與Marshalling結(jié)合發(fā)送對象的相關資料,需要的朋友可以參考借鑒,下面來一起看看吧。
    2017-05-05
  • Java NIO深入分析

    Java NIO深入分析

    本篇技術文章主要對Java新api(New IO)做了詳細深入的講解,有助于程序?qū)IO有更加深入的理解。
    2017-12-12
  • java servlet手機app訪問接口(三)高德地圖云存儲及檢索

    java servlet手機app訪問接口(三)高德地圖云存儲及檢索

    這篇文章主要為大家詳細介紹了java servlet手機app訪問接口(三),高德地圖云存儲及檢索,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2016-12-12
  • SpringBoot3.x整合swagger的實現(xiàn)示例

    SpringBoot3.x整合swagger的實現(xiàn)示例

    本文主要介紹了SpringBoot3.x整合swagger的實現(xiàn)示例,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2025-08-08

最新評論

方城县| 左贡县| 浦城县| 镇雄县| 贡山| 巴楚县| 长海县| 麟游县| 迁安市| 莒南县| 井陉县| 大丰市| 邵武市| 左贡县| 兴和县| 林州市| 洛隆县| 临高县| 乐亭县| 祥云县| 桃源县| 富平县| 临潭县| 宜州市| 大英县| 东平县| 桓仁| 会宁县| 陇川县| 永城市| 盖州市| 深圳市| 南投县| 阿拉善左旗| 简阳市| 突泉县| 武宣县| 延安市| 塔城市| 海阳市| 青河县|