如何在 Spring Boot 中使用 EnableJpaAuditing 注释在印度标准时间(即 UTC+05:30)中写入 @CreatedDate?
Posted
技术标签:
【中文标题】如何在 Spring Boot 中使用 EnableJpaAuditing 注释在印度标准时间(即 UTC+05:30)中写入 @CreatedDate?【英文标题】:How to use EnableJpaAuditing annotation in Spring boot to wrtite @CreatedDate in Indian Standard Time i.e. UTC+05:30? 【发布时间】:2020-06-27 07:39:43 【问题描述】:我的模型扩展了这个 AuditModel
import com.fasterxml.jackson.annotation.JsonIgnoreProperties;
import org.springframework.data.annotation.CreatedDate;
import org.springframework.data.annotation.LastModifiedDate;
import org.springframework.data.jpa.domain.support.AuditingEntityListener;
import javax.persistence.*;
import java.io.Serializable;
import java.util.Date;
@MappedSuperclass
@EntityListeners(AuditingEntityListener.class)
@JsonIgnoreProperties(
value = "createdAt", "updatedAt",
allowGetters = true
)
public abstract class AuditModel implements Serializable
@Temporal(TemporalType.TIMESTAMP)
@Column(name = "created_at", nullable = false, updatable = false)
@CreatedDate
private Date createdAt;
@Temporal(TemporalType.TIMESTAMP)
@Column(name = "updated_at", nullable = false)
@LastModifiedDate
private Date updatedAt;
//getters and setters
我已将以下行添加到 application.properties
spring.jpa.properties.hibernate.jdbc.time_zone=UTC
但我希望数据库条目中的时间为 UTC+05:30。该怎么做?
谢谢
【问题讨论】:
【参考方案1】:在您的主应用程序类或其他适当的 bean 中,您可以添加一个 PostConstruct 以在整个应用程序中设置时区,这将被审计标签认可(以下是 UTC 作为示例)
@PostConstruct
public void init()
TimeZone.setDefault(TimeZone.getTimeZone(ZoneOffset.UTC))
【讨论】:
虽然如果您坚持使用时区列的时间戳可能会出现复杂情况 - 如果它只是一个时间戳则很好。以上是关于如何在 Spring Boot 中使用 EnableJpaAuditing 注释在印度标准时间(即 UTC+05:30)中写入 @CreatedDate?的主要内容,如果未能解决你的问题,请参考以下文章
Spring Boot scanBasePackages无法从依赖项中找到bean
Persisting data with object-relational mapping-006Spring-Data的运行规则(@Enabl
如何在 spring-boot 中禁用 spring-data-mongodb 自动配置