티스토리 뷰

코프링으로 개발 시 마주친 에러 관련 포스팅입니다.

개발 환경은 다음과 같습니다.

  • Spring Boot Version : 3.0.1
  • Java Version : 17
  • Kotlin Version : 1.8.21

 

https://github.com/laboratory-kkoon9/kotlin-spring

 

GitHub - laboratory-kkoon9/kotlin-spring

Contribute to laboratory-kkoon9/kotlin-spring development by creating an account on GitHub.

github.com

배경

커피 주문 어플리케이션 내 entity 개발하면서 발생한 에러입니다.

코드 먼저 살펴봅시다.

@Entity
@Table(name = "cafe")
class Cafe(
    date: LocalDate,
    openedAt: LocalDateTime,
    closedAt: LocalDateTime? = null,
    activate: Boolean = true
) {
    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    val id: Long? = 0

    @Column(name = "date")
    val date: LocalDate = date

    @Column(name = "opened_at")
    val openedAt: LocalDateTime = openedAt

    @Column(name = "closed_at")
    val closedAt: LocalDateTime? = closedAt

    @Column(name = "activate")
    val activate: Boolean = activate
}

다음은 에러 메시지입니다.

 

왜 이러한 에러가 발생하는지 원인을 알아봅시다.

원인

Hibernate User Guide에 따르면 Entity 는 public 또는 protected no arg constructor 를 반드시 포함해야 합니다.

자세한 내용은 해당 블로그에 친절하게 설명되어 있으니 참고하시면 됩니다.

결론

결론적으로 말하면 다음 코드와 같이 gradle kotlin dsl을 설정해주어야 합니다.

plugins {
    val kotlinVersion = "1.8.21"
    id("org.springframework.boot") version "3.0.1"
    id("io.spring.dependency-management") version "1.1.0"
    kotlin("plugin.spring") version kotlinVersion
    kotlin("plugin.jpa") version kotlinVersion

}

사실 해당 plugins을 설정해도 컴파일 에러가 발생하는데, 실행하는데에는 문제가 없습니다.

원인을 찾으면 해당 내용 추가하도록 하겠습니다.

공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2025/02   »
1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28
글 보관함