package kr.co.vividnext.sodalive.common import com.fasterxml.jackson.databind.annotation.JsonDeserialize import com.fasterxml.jackson.databind.annotation.JsonSerialize import com.fasterxml.jackson.datatype.jsr310.deser.LocalDateTimeDeserializer import com.fasterxml.jackson.datatype.jsr310.ser.LocalDateTimeSerializer import java.time.LocalDateTime import javax.persistence.GeneratedValue import javax.persistence.GenerationType import javax.persistence.Id import javax.persistence.MappedSuperclass import javax.persistence.PrePersist import javax.persistence.PreUpdate @MappedSuperclass abstract class BaseEntity { @Id @GeneratedValue(strategy = GenerationType.IDENTITY) var id: Long? = null @JsonSerialize(using = LocalDateTimeSerializer::class) @JsonDeserialize(using = LocalDateTimeDeserializer::class) var createdAt: LocalDateTime? = null @JsonSerialize(using = LocalDateTimeSerializer::class) @JsonDeserialize(using = LocalDateTimeDeserializer::class) var updatedAt: LocalDateTime? = null @PrePersist fun prePersist() { createdAt = LocalDateTime.now() updatedAt = LocalDateTime.now() } @PreUpdate fun preUpdate() { updatedAt = LocalDateTime.now() } }