988 이슈를 처리하려고, Stage 엔티티에 @OneToMany 단방향 관계를 가진 List<StageArtist> 필드를 정의했더니 다음과 같은 에러가 발생하며 어플리케이션 실행에 실패합니다.
[2024-05-21 23:57:05:2533] [main] ERROR [org.springframework.boot.SpringApplication.reportFailure:827] - Application run failed org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'entityManagerFactory' defined in class path resource [org/springframework/boot/autoconfigure/orm/jpa/HibernateJpaConfiguration.class]: class org.hibernate.mapping.BasicValue cannot be cast to class org.hibernate.mapping.ToOne (org.hibernate.mapping.BasicValue and org.hibernate.mapping.ToOne are in unnamed module of loader 'app')
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.initializeBean(AbstractAutowireCapableBeanFactory.java:1770)
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:598)
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:520)
at org.springframework.beans.factory.support.AbstractBeanFactory.lambda$doGetBean$0(AbstractBeanFactory.java:325)
at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:234)
Caused by: java.lang.ClassCastException: class org.hibernate.mapping.BasicValue cannot be cast to class org.hibernate.mapping.ToOne (org.hibernate.mapping.BasicValue and org.hibernate.mapping.ToOne are in unnamed module of loader 'app')
at org.hibernate.boot.model.internal.BinderHelper.checkMappedByType(BinderHelper.java:1087)
at org.hibernate.boot.model.internal.CollectionBinder.isReversePropertyInJoin(CollectionBinder.java:1572)
at org.hibernate.boot.model.internal.CollectionBinder.noAssociationTable(CollectionBinder.java:1583)
at org.hibernate.boot.model.internal.CollectionBinder.bindStarToManySecondPass(CollectionBinder.java:1544)
at org.hibernate.boot.model.internal.CollectionBinder$1.secondPass(CollectionBinder.java:1535)
스프링 의존성 버전에서 하이버네이트의 최신 버전은 6.4.4 이기 때문에 해당 버그가 수정되었습니다.
따라서 스프링 부트 버전을 최신으로 올려서 해당 버그를 수정해야 할 것 같습니다.
추가로 스프링 부트 버전을 올리면서, 새롭게 추가된 RestClient를 사용하여 기존에 사용되던 RestTemplate를 대체할 수 있을 것 같습니다.
(RestTemplate는 스프링 5.0 버전부터 유지보수 단계에 들어섰기 때문에, 갈아타야할 이유가 있습니다)
(또한 RestClient를 사용하면 fluent style으로 보기 좋은 코드를 작성할 수 있습니다)
✨ 세부 내용
988 이슈를 처리하려고,
Stage
엔티티에@OneToMany
단방향 관계를 가진List<StageArtist>
필드를 정의했더니 다음과 같은 에러가 발생하며 어플리케이션 실행에 실패합니다.해당 이슈는 하이버네이트 버그로, 6.3.0 이상 버전부터 고쳐졌다고 합니다.
스프링 의존성 버전에서 하이버네이트의 최신 버전은 6.4.4 이기 때문에 해당 버그가 수정되었습니다.
따라서 스프링 부트 버전을 최신으로 올려서 해당 버그를 수정해야 할 것 같습니다.
추가로 스프링 부트 버전을 올리면서, 새롭게 추가된
RestClient
를 사용하여 기존에 사용되던RestTemplate
를 대체할 수 있을 것 같습니다. (RestTemplate는 스프링 5.0 버전부터 유지보수 단계에 들어섰기 때문에, 갈아타야할 이유가 있습니다) (또한 RestClient를 사용하면 fluent style으로 보기 좋은 코드를 작성할 수 있습니다)⏰ 예상 소요 시간
1시간