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