如何在 Spring JPA 中为审计字段 @CreatedDate、@LastModifiedDate 以 UTC 格式保存时间戳

Hem*_*ant 1 java spring jpa spring-data-jpa spring-boot

这是我的带有审计字段的实体的基类。对于字段@CreatedDate、@LastModifiedDate,默认情况下它会节省我的系统时间。我的要求是以UTC格式保存时间戳。

有没有人有这个解决方案?

import java.time.LocalDateTime;

import javax.persistence.Column;
import javax.persistence.EntityListeners;
import javax.persistence.MappedSuperclass;

import org.springframework.data.annotation.CreatedBy;
import org.springframework.data.annotation.CreatedDate;
import org.springframework.data.annotation.LastModifiedBy;
import org.springframework.data.annotation.LastModifiedDate;
import org.springframework.data.jpa.domain.support.AuditingEntityListener;

import lombok.Data;


@MappedSuperclass
@Data
@EntityListeners(AuditingEntityListener.class)
public abstract class BaseEntity {

    @LastModifiedDate
    @Column(name="last_modified_datetime")
    private LocalDateTime lastModifiedDateTime;

    @CreatedDate
    @Column(name="created_datetime")
    private LocalDateTime createdDateTime;

}

Run Code Online (Sandbox Code Playgroud)

小智 5

这是时区问题。将此代码用于spring boot。

@PostConstruct
public void setTimeZone() {
   TimeZone.setDefault(TimeZone.getTimeZone("Etc/UTC"));
}
Run Code Online (Sandbox Code Playgroud)