Как использовать аннотацию EnableJpaAuditing при загрузке Spring, чтобы записать @CreatedDate в стандартное индийское время, то есть UTC + 05: 30? - PullRequest
0 голосов
/ 16 марта 2020

Мои модели расширяют эту 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 Ответ

0 голосов
/ 16 марта 2020

В вашем основном классе приложения или другом соответствующем компоненте вы можете добавить PostConstruct для установки часового пояса во всем приложении, что будет учитываться тегами Auditing (ниже приведен UT C в качестве примера)

@PostConstruct
public void init() {
    TimeZone.setDefault(TimeZone.getTimeZone(ZoneOffset.UTC))
}
...