728x90
Short description
아래의 간단한 API를 테스트하던 중, 갑작스러운 500 오류가 발생했습니다.
override fun checkCode(email: String, code: String): Boolean {
if (codeRepository.findByEmail(email).orElse(null)?.code == code) return true
return false
}
framework.data.keyvalue.core.UncategorizedKeyValueException: No accessor to set property
@org.springframework.data.annotation.Id()private final java.lang.String
com.we.webackend.domain.user.persistance.entity.Code.id!;
nested exception is java.lang.UnsupportedOperationException: No accessor to set property
@org.springframework.data.annotation.Id()private final java.lang.String
com.we.webackend.domain.user.persistance.entity.Code.id!] with root cause
java.lang.UnsupportedOperationException: No accessor to set property @org.springframework.data.annotation.Id()private final java.lang.String com.we.webackend.domain.user.persistance.entity.Code.id!
위 로그 내용을 살펴보면 private final에 대한 accessor가 존재하지 않는다는 이야기인데, 이해가 되지 않아 구글링해본 결과 해당 내용과 유사한 내용이 존재했습니다.
제 코드 또한 위 내용과 동일한 형태로 작성되어있었습니다.
@RedisHash
class Code(
email: String,
code: String
) {
@Id
val id: String = email + code
protected set
}
Resolution
답변인즉 Spring Data 2.1부터 immutable objects를 지원하고 더 이상 final을 업데이트 하지 않겠다는 이야기였습니다. kotlin에서 val로 선언 시 java final로 변환되므로 발생한 문제였습니다.
'SpringBoot' 카테고리의 다른 글
SpringBoot graceful shutdown (0) | 2023.08.03 |
---|---|
kotlin 환경에서 OpenFeign ErrorDecode 시 발생하는 역직렬화 작업 오류 (0) | 2023.06.10 |
JPA-Native-Query에-파라미터로-Enum-값-받을-때-오류 (0) | 2023.06.10 |
JPA OrphanRemoval 사용 시 복합 키 엔터티 삭제 버그 (0) | 2023.06.10 |
JPA Entity Id 타입을 UUID로 지정 시 업데이트 실패 오류 (0) | 2023.06.10 |