woowacourse-teams / 2023-festa-go

🎪 페스타고, 대학 축제를 더욱 즐겁게!
71 stars 8 forks source link

[BE] Spring Boot 버전을 3.2.5 버전으로 업그레이드한다. #989

Closed seokjin8678 closed 5 months ago

seokjin8678 commented 5 months ago

✨ 세부 내용

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.3.0 이상 버전부터 고쳐졌다고 합니다.

스프링 의존성 버전에서 하이버네이트의 최신 버전은 6.4.4 이기 때문에 해당 버그가 수정되었습니다.

따라서 스프링 부트 버전을 최신으로 올려서 해당 버그를 수정해야 할 것 같습니다.

추가로 스프링 부트 버전을 올리면서, 새롭게 추가된 RestClient를 사용하여 기존에 사용되던 RestTemplate를 대체할 수 있을 것 같습니다. (RestTemplate는 스프링 5.0 버전부터 유지보수 단계에 들어섰기 때문에, 갈아타야할 이유가 있습니다) (또한 RestClient를 사용하면 fluent style으로 보기 좋은 코드를 작성할 수 있습니다)

⏰ 예상 소요 시간

1시간