Failed to update table [tbl_user];
Row with Id [87a30e61-af0a-4894-8dd9-8c59a9278161] does not exist
위와 같은 에러가 발생했는데 찾아보니 @Id를 사용하게 되면 식별자 값이 없으면 insert,
식별자 값이 있으면 update(merge)로 동작해야 하는데 이 기능을 지원해주지 않는다.
그래서 해결 방법을 찾아보니 Persistable을 구현해서 isNew를 true로 해주면 insert로 동작시킬 수 있다.
abstract class BaseUUIDEntity(
@field:Id
@get:JvmName("getIdentifier")
open var id: UUID = defaultUUID
) : Persistable<UUID> {
override fun getId() = id
override fun isNew() =
(id == defaultUUID).apply { if (this) id = UUID.randomUUID() }
companion object {
private val defaultUUID = UUID(0, 0)
}
}
https://github.com/spring-projects/spring-data-r2dbc/issues/275