SpringBoot:JPA + AuditingEntityListener時(shí)區(qū)設(shè)置方式
JPA + AuditingEntityListener時(shí)區(qū)設(shè)置
在SpringBoot項(xiàng)目中,如果應(yīng)用啟用了EnableJpaAuditing并且使用AuditingEntityListener對(duì)實(shí)體的創(chuàng)建時(shí)間、更新時(shí)間進(jìn)行自動(dòng)審計(jì),可能存在生成時(shí)間的時(shí)區(qū)和系統(tǒng)時(shí)區(qū)不一致的問(wèn)題。
可在應(yīng)用配置中添加如下配置
將時(shí)區(qū)設(shè)定為指定時(shí)區(qū):
spring.jpa.properties.hibernate.jdbc.time_zone = GMT+8
@EntityListeners(AuditingEntityListener.class)介紹
@EntityListeners
源碼
/** * Specifies the callback listener classes to be used for an * entity or mapped superclass. This annotation may be applied * to an entity class or mapped superclass. * * @since Java Persistence 1.0 */ @Target({TYPE}) @Retention(RUNTIME) public @interface EntityListeners { /** The callback listener classes */ Class[] value(); }
分析
從源碼的注釋中可以很清楚的了解到該注解的作用,簡(jiǎn)單翻譯如下:該注解用于指定Entity或者superclass上的回調(diào)監(jiān)聽(tīng)類(lèi)。該注解可以用于Entity或者superclass上。
AuditingEntityListener.class
源碼
/** * JPA entity listener to capture auditing information on persiting and updating entities. To get this one flying be * sure you configure it as entity listener in your {@code orm.xml} as follows: * * <pre> * <persistence-unit-metadata> * <persistence-unit-defaults> * <entity-listeners> * <entity-listener class="org.springframework.data.jpa.domain.support.AuditingEntityListener" /> * </entity-listeners> * </persistence-unit-defaults> * </persistence-unit-metadata> * </pre> * * After that it's just a matter of activating auditing in your Spring config: * * <pre> * @Configuration * @EnableJpaAuditing * class ApplicationConfig { * * } * </pre> * * <pre> * <jpa:auditing auditor-aware-ref="yourAuditorAwarebean" /> * </pre> * * @author Oliver Gierke * @author Thomas Darimont */ @Configurable public class AuditingEntityListener { private ObjectFactory<AuditingHandler> handler; /** * Configures the {@link AuditingHandler} to be used to set the current auditor on the domain types touched. * * @param auditingHandler must not be {@literal null}. */ public void setAuditingHandler(ObjectFactory<AuditingHandler> auditingHandler) { Assert.notNull(auditingHandler, "AuditingHandler must not be null!"); this.handler = auditingHandler; } /** * Sets modification and creation date and auditor on the target object in case it implements {@link Auditable} on * persist events. * * @param target */ @PrePersist public void touchForCreate(Object target) { if (handler != null) { handler.getObject().markCreated(target); } } /** * Sets modification and creation date and auditor on the target object in case it implements {@link Auditable} on * update events. * * @param target */ @PreUpdate public void touchForUpdate(Object target) { if (handler != null) { handler.getObject().markModified(target); } } }
分析
同樣的從該類(lèi)的注釋也可以了解到該類(lèi)的作用:這是一個(gè)JPA Entity Listener,用于捕獲監(jiān)聽(tīng)信息,當(dāng)Entity發(fā)生持久化和更新操作時(shí)。
以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。
- 如何解決springboot數(shù)據(jù)庫(kù)查詢時(shí)出現(xiàn)的時(shí)區(qū)差異問(wèn)題
- SpringBoot如何根據(jù)用戶系統(tǒng)時(shí)區(qū)動(dòng)態(tài)展示時(shí)間
- springboot如何統(tǒng)一設(shè)置時(shí)區(qū)
- SpringBoot中?Jackson?日期的時(shí)區(qū)和日期格式問(wèn)題解決
- 關(guān)于SpringBoot mysql數(shù)據(jù)庫(kù)時(shí)區(qū)問(wèn)題
- springboot項(xiàng)目如何設(shè)置時(shí)區(qū)
相關(guān)文章
SpringBoot入門(mén)編寫(xiě)第一個(gè)程序Helloworld
這篇文章是Springboot入門(mén)篇,來(lái)教大家編寫(xiě)第一個(gè)Springboot程序Helloworld,文中附有詳細(xì)的示例代碼,有需要的同學(xué)可以借鑒參考下2021-09-09idea熱部署插件jrebel正式版及破解版安裝詳細(xì)圖文教程
這篇文章主要介紹了idea熱部署插件jrebel正式版及破解版安裝詳細(xì)教程,本文通過(guò)圖文并茂的形式給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2020-12-12SpringBoot入門(mén)之集成Druid的方法示例
這篇文章主要介紹了SpringBoot入門(mén)之集成Druid的方法示例,小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧2018-07-07使用springboot開(kāi)發(fā)的第一個(gè)web入門(mén)程序的實(shí)現(xiàn)
這篇文章主要介紹了使用springboot開(kāi)發(fā)的第一個(gè)web入門(mén)程序的實(shí)現(xiàn),文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2021-04-04細(xì)數(shù)java for循環(huán)中的那些坑
這篇文章主要介紹了Java for循環(huán)方法,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2021-07-07解決BigDecimal轉(zhuǎn)long丟失精度的問(wèn)題
這篇文章主要介紹了解決BigDecimal轉(zhuǎn)long丟失精度的問(wèn)題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2020-12-12feign遠(yuǎn)程調(diào)用無(wú)法傳遞對(duì)象屬性405的問(wèn)題
這篇文章主要介紹了feign遠(yuǎn)程調(diào)用無(wú)法傳遞對(duì)象屬性405的問(wèn)題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2022-03-03