diff --git a/src/main/kotlin/roomescape/common/entity/BaseEntity.kt b/src/main/kotlin/roomescape/common/entity/BaseEntity.kt index 439f62ef..ae6d1516 100644 --- a/src/main/kotlin/roomescape/common/entity/BaseEntity.kt +++ b/src/main/kotlin/roomescape/common/entity/BaseEntity.kt @@ -33,3 +33,22 @@ abstract class BaseEntity( abstract override fun getId(): Long? } + +@MappedSuperclass +abstract class PersistableBaseEntity( + @Id + @Column(name = "id") + private val _id: Long, + + @Transient + private var isNewEntity: Boolean = true +): Persistable { + @PostLoad + @PostPersist + fun markNotNew() { + isNewEntity = false + } + + override fun isNew(): Boolean = isNewEntity + override fun getId(): Long = _id +}