40 lines
1.2 KiB
Kotlin
40 lines
1.2 KiB
Kotlin
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()
|
|
}
|
|
}
|