Book Entity를 먼저 kotlin 코드로 변경 후~
repository와 service에서 사용하는 entity들을
자바 ->코틀린 entity로 바꿔주자.
자바에서 코틀린 코드를 호출 할 때 default 파라미터를 인식하지 못한다.
val id: Long? = null
그렇기 때문에 id에 null
을 넣자.
(service를 코틀린 코드로 바꾸면 그 때 default 파라미터를 활용할 수 있다)
@Transactional
public void saveBook(BookRequest request) {
JavaBook newBook = new JavaBook(request.getName());
bookRepository.save(newBook);
}
@Transactional
public void saveBook(BookRequest request) {
Book newBook = new Book(request.getName(), null);
bookRepository.save(newBook);
}
service import를 정리 후 전체 테스트를 돌려보면 아래와 같은 에러가 난다.
nested exception is java.lang.NoClassDefFoundError: kotlin/reflect/full/KClasses
코틀린 클래스에 대해서 reflection을 못 한다는 의미.
=> 이걸 해결해주기 위해서는 코틀린 리플렉션 라이브러리를 넣어주어야 한다.
리플렉션: 클래스나 메소드 등을 런타임으로 제어하기 위한 기술이다.