SpringBoot:JPA + AuditingEntityListener时区设置方式

 更新时间:2021年12月21日 11:06:11   作者:晴空排云  
这篇文章主要介绍了SpringBoot:JPA + AuditingEntityListener时区设置方式,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教

JPA + AuditingEntityListener时区设置

在SpringBoot项目中,如果应用启用了EnableJpaAuditing并且使用AuditingEntityListener对实体的创建时间、更新时间进行自动审计,可能存在生成时间的时区和系统时区不一致的问题。

可在应用配置中添加如下配置

将时区设定为指定时区:

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();
}

分析

从源码的注释中可以很清楚的了解到该注解的作用,简单翻译如下:该注解用于指定Entity或者superclass上的回调监听类。该注解可以用于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>
 * &lt;persistence-unit-metadata&gt;
 *     &lt;persistence-unit-defaults&gt;
 *         &lt;entity-listeners&gt;
 *             &lt;entity-listener class="org.springframework.data.jpa.domain.support.AuditingEntityListener" /&gt;
 *         &lt;/entity-listeners&gt;
 *     &lt;/persistence-unit-defaults&gt;
 * &lt;/persistence-unit-metadata&gt;
 * </pre>
 * 
 * After that it's just a matter of activating auditing in your Spring config:
 * 
 * <pre>
 * &#064;Configuration
 * &#064;EnableJpaAuditing
 * class ApplicationConfig {
 * 
 * }
 * </pre>
 * 
 * <pre>
 * &lt;jpa:auditing auditor-aware-ref="yourAuditorAwarebean" /&gt;
 * </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);
  }
 }
}

分析

同样的从该类的注释也可以了解到该类的作用:这是一个JPA Entity Listener,用于捕获监听信息,当Entity发生持久化和更新操作时。

以上为个人经验,希望能给大家一个参考,也希望大家多多支持脚本之家。

相关文章

  • 关于Jackson的JSON工具类封装 JsonUtils用法

    关于Jackson的JSON工具类封装 JsonUtils用法

    这篇文章主要介绍了关于Jackson的JSON工具类封装 JsonUtils用法,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2020-09-09
  • Mybatis流式查询之ResultHanlde问题

    Mybatis流式查询之ResultHanlde问题

    这篇文章主要介绍了Mybatis流式查询之ResultHanlde问题,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教
    2023-08-08
  • 如何将Mybatis连接到ClickHouse

    如何将Mybatis连接到ClickHouse

    这篇文章主要介绍了如何将Mybatis连接到ClickHouse,帮助大家更好得理解和学习使用Mybatis,感兴趣的朋友可以了解下
    2021-03-03
  • 如何使用bootstrap.yml读取配置中心的配置文件

    如何使用bootstrap.yml读取配置中心的配置文件

    这篇文章主要介绍了如何使用bootstrap.yml读取配置中心的配置文件问题,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教
    2024-07-07
  • Java使用Lambda表达式实现排序功能的实现代码

    Java使用Lambda表达式实现排序功能的实现代码

    在 Java 中使用 Lambda 表达式进行排序是一种简洁且功能强大的方式,特别是在对集合中的对象进行自定义排序时,Lambda 表达式可以与 Collections.sort() 或 List.sort() 方法结合使用,本文给大家介绍了Java使用Lambda表达式实现排序功能的方法,需要的朋友可以参考下
    2025-07-07
  • springboot请求找不到路径异常的问题

    springboot请求找不到路径异常的问题

    这篇文章主要介绍了springboot请求找不到路径异常的问题及解决方案,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2022-01-01
  • Java实现将html字符串插入到PPT幻灯片

    Java实现将html字符串插入到PPT幻灯片

    Java后端代码操作PPT幻灯片时,可直接在幻灯片中绘制形状,并在形状中添加文本字符串内容。本篇文章主要介绍通过java实现将html字符串添加到PPT幻灯片的的方法,可添加文字、图片、视频、音频等。以下是具体方法和步骤。
    2021-11-11
  • SpringBoot外部化配置示例解析

    SpringBoot外部化配置示例解析

    这篇文章主要介绍了SpringBoot外部化配置示例解析,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2023-02-02
  • java底层AQS实现类ReentrantLock锁的构成及源码解析

    java底层AQS实现类ReentrantLock锁的构成及源码解析

    本章我们就要来学习一下第一个 AQS 的实现类:ReentrantLock,看看其底层是如何组合 AQS ,实现了自己的那些功能,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步
    2022-03-03
  • 聊聊spring继承的问题

    聊聊spring继承的问题

    这篇文章主要介绍了spring继承的问题,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2021-09-09

最新评论