千家信息网

SpringBoot中JPA + AuditingEntityListener时区设置方式是什么

发表于:2025-01-31 作者:千家信息网编辑
千家信息网最后更新 2025年01月31日,这篇文章将为大家详细讲解有关SpringBoot中JPA + AuditingEntityListener时区设置方式是什么,文章内容质量较高,因此小编分享给大家做个参考,希望大家阅读完这篇文章后对相
千家信息网最后更新 2025年01月31日SpringBoot中JPA + AuditingEntityListener时区设置方式是什么

这篇文章将为大家详细讲解有关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: *  * 
 * <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> * 
* * After that it's just a matter of activating auditing in your Spring config: * *
 * @Configuration * @EnableJpaAuditing * class ApplicationConfig { *  * } * 
* *
 * <jpa:auditing auditor-aware-ref="yourAuditorAwarebean" /> * 
* * @author Oliver Gierke * @author Thomas Darimont */@Configurablepublic class AuditingEntityListener { private ObjectFactory 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) { 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发生持久化和更新操作时。

关于SpringBoot中JPA + AuditingEntityListener时区设置方式是什么就分享到这里了,希望以上内容可以对大家有一定的帮助,可以学到更多知识。如果觉得文章不错,可以把它分享出去让更多的人看到。

时区 时间 注解 源码 方式 作用 内容 文章 更多 注释 知识 篇文章 分析 应用 更新 监听 配置 不错 清楚 一致 数据库的安全要保护哪些东西 数据库安全各自的含义是什么 生产安全数据库录入 数据库的安全性及管理 数据库安全策略包含哪些 海淀数据库安全审计系统 建立农村房屋安全信息数据库 易用的数据库客户端支持安全管理 连接数据库失败ssl安全错误 数据库的锁怎样保障安全 国家农业科技园区数据库 网络安全保卫大队干什么的 公司定制软件开发 郫都区网络安全宣传活动 系统未能获取财务报表数据库 周网络安全宣传计划 数据库及其应用课后题 小米软件开发工程师工资 远程服务器安全协议协商失败 网络安全辩论赛问题答案 软件开发开发一半 有关网络安全的主题班会记录 apache服务器的根目录在哪 秦淮区个人软件开发专业服务 网页形式的数据库 单招计算机网络技术热门么 服务器管理口如何安装操作系统 重庆做软件开发的公司电话 电脑上没有数据库怎么建立数据 四平软件开发系统 20 30岁就业数据库 海淀区综合软件开发平台 请检查服务器文档 设置数据库上传限制 计算机网络技术的证书考试 地调数据用的数据库 迈瑞 软件开发 魔兽世界 服务器地理位置 女生软件开发和软件测试 相关大数据系统支持华为服务器
0