inflearn logo
강의

Khóa học

Chia sẻ kiến thức

Trong thực tế! Phát triển ứng dụng quản lý thư viện với Kotlin và Spring Boot (tái cấu trúc dự án Java)

Bài học 12. Thay đổi lớp miền thành Kotlin - Book.java

Book.java Kotlin으로 변경 후 오류 문의

726

jipps

3 câu hỏi đã được viết

1

안녕하세요.

12강 에서 처럼 Book.java를 Book.kt kotlin 코드로 변경하고 나서 테스트코드 수행하면 아래와 같은 오류가 발생합니다. 확인해야 될 사항이 뭐가 있을까요.

Caused by: org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'bookRepository' defined in com.group.libraryapp.domain.book.BookRepository defined in @EnableJpaRepositories declared on JpaRepositoriesRegistrar.EnableJpaRepositoriesConfiguration: Invocation of init method failed; nested exception is java.lang.IllegalArgumentException: Not a managed type: class com.group.librayapp.domain.book.Book

 

java spring kotlin spring-boot refactoring

Câu trả lời 4

1

jipps

이런, librayapp 으로 패키지명이 잘못되어 있었네요.
수정하여 정상 테스트 되는 거 확인하였습니다.

감사합니다. 😅

0

seungwonjeong2832

태현님 안녕하세요!

저도 같은 에러가 발생했는데

build.gradle 에

implementation 'org.jetbrains.kotlin:kotlin-reflect:1.2.41'

을 추가하니까 해결 되었습니다..! 혹시 원인을 알 수 있을까요?

 

 

0

lannstark

안녕하세요 승원님!! 새로 올려주신 질문 글에 답변 드렸습니다! 감사합니다! 😊 🙏

0

jipps

@Entity는 붙어 있습니다. 아래 전체 소스입니다.

 

package com.group.librayapp.domain.book

import java.lang.IllegalArgumentException
import javax.persistence.Entity
import javax.persistence.GeneratedValue
import javax.persistence.GenerationType
import javax.persistence.Id

@Entity
class Book(
    val name: String,
    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    val id: Long? = null,

) {
    init {
        if (name.isBlank()) {
            throw IllegalArgumentException("이름은 비어 있을 수 없습니다.")
        }
    }
}

 

 

0

lannstark

안녕하세요~! 오 그러네요~!! https://wakestand.tistory.com/742 에서도 언급되는 것처럼 Not a managed type 은 지정한 객체에서 @Entity 를 찾지 못한 경우가 유일하거든요!

 

아 지금 혹시 패키지가 library 가 아니라 libray 일까요?!!

@SpringBootApplication 이라고 붙어 있는 어노테이션은 본인과 본인 패키지 하위의 @Entity @Service 등을 스캔하게 되는데, 만약 코틀린의 패키지를 구성하실 때 Java와 다르게 오타가 난다면, 스프링 서버가 @Entity 를 인식하고 있지 못할 수도 있습니다!

 

즉, 우리는 @Entity 라고 달아주었지만, 스프링 서버 (@SpringBootApplication) 와 패키지가 달라 스프링이 인지하지 못한 것이지요!!

Kotlin 쪽의 패키지와 Java 쪽의 패키지를 비교해보시면 좋을 것 같습니다!! 😊

0

lannstark

안녕하세요, jipps님!! 😊

올려주신 stack trace를 보니 가장 근원적인 에러가 다음으로 나오는 것 같습니다!

java.lang.IllegalArgumentException:
  Not a managed type:
  class com.group.librayapp.domain.book.Book

 

이 에러는, Book이 JPA가 관리하는 객체가 아니라는 뜻이에요!!

때문에 BookRepository를 만들어주실 때 타입 인자로 넣어주신 Book 객체에 @Entity 이 붙어있는지 확인해보시면 좋을 것 같습니다!!!

 

혹시 그래도 잘 안되시면 편하게 또 질문 남겨 주셔요~!!! 주말에도 열심히 공부하시다니 정말 멋지시네요!! 응원 드립니다!! 🎉🎉

감사합니다!! 🙏

 

안녕하세요 혹시 프론트 코드 제공받을 수 있을까요?

0

106

2

실행이 안되네요

0

102

2

프론트 영역 보는법

0

88

2

companion object

0

99

2

Custom 레프직토리 형식

0

85

2

Querydsl 도입

0

94

2

fetch join DISTINCT 중복제거

1

115

2

표준 예외와 커스텀 예외 사용 전략 질문

0

134

3

이 질문이 왜 없는지 이해가 안 되지만 문제 인식 및 해결 방법 남깁니다.

1

208

2

테스트를 위한 코드

1

130

2

프로젝트 실행 에러

0

170

2

PDF 문서에 오타가 있어서 알려드립니다.

1

115

1

enum질문

1

101

1

테스트 후 AfterEach 함수에서 나오는 쿼리

0

163

2

테스트 fixture

1

235

2

./gradlew test 실행시 인식할수 없다고 뜹니다.

0

160

1

test 코드 실행시 경고가 발생합니다.

0

164

1

13강 User Kotlin 변환중

2

199

3

'추가 - 코프링과 플러그인' 강의 7:46 allopen 관련 질문

2

188

1

-

0

157

2

4:28 build.gradle 수정 시 kotlin-reflect관련 implementation 추가 해야할까요?

0

340

3

junit import 불가

0

294

3

테스트 코드와 관련하여 질문이 있습니다.

1

221

1

hibernate가 select를 두번 하는 이유

0

257

1