7장 스프링에서 하이버네이트 사용하기
7.4 하이버네이트 Session 인터페이스
7.4.4장을 하던 도중 hibernateexception 에 빨간줄이 그어지는 에러를 만났다.
SessionFactory 에서 getCurrentSession()을 사용하는데,
책에서는 아무 설명이 없지만, 자바에서는 throws HibernateException 으로 예외를 던져주어야 한다고 코드가 생성된다.
문제는, throws HibernateException을 추가하면 아래와 같이 빨간 줄이 뜬다...
intellij에서 빨간줄 부분에 마우스 커서를 대면 아래와 같이 type이 맞지 않는다고 나온다.
Throwable type이여야 하는데 HibernateException 타입이여서 맞지 않는다는 것이다.
위에 글을 봐서는 'jakarta.persistence.PersistenceException' 부분이 빨간 글씨로 떠서
https://mvnrepository.com/ 사이트에서 Jakarta Persistence API 를 찾아서
→ implementation group: 'jakarta.persistence', name: 'jakarta.persistence-api'
gradle에 위 내용을 dependencies를 추가하고 빌드해 주었는데, 여전히 해결이 안된다.
stackoverflow에서 나와 같은 에러를 가지고 있는 사람이 질문한 글이 있었다.
https://stackoverflow.com/questions/40760061/hibernateexception-and-throwable
dependencies에 아래 두개 추가.
1. implementation group: 'jakarta.persistence', name: 'jakarta.persistence-api'
2. implementation group: 'org.hibernate.javax.persistence', name: 'hibernate-jpa-2.1-api', version: '1.0.0.Final'
(1번은 위에 이미 추가했었고, 2번 내용을 추가했다.)
gradle 에서 빌드해줘야하는 문제 같아서 인터넷을 여기저기 찾아보며
추가해하라는 repository는 다 추가해봤는데 해결하지 못해서 진도가 더 나가지 못하고 있었다가,
너무 어이없게(?) 해결했다.
gradle dependencies 에 다른 추가하는 내용 없이 아래 하나만 추가해도 해결됐다..
implementation group: 'jakarta.persistence', name: 'jakarta.persistence-api', version: '3.1.0'
버전... 버전이 중요했다..
spring-boot에서 관리해주는 버전 믿고 제일 처음에 version을 안적었어서 저 에러가 해결이 안됐었구나..
나는 보통 gradle에 추가할때, 제일 최신 version 또는 압도적으로 가장 많이 다운받은 version을 받는다.
아니면 spring boot에서 버전을 관리해주기때문에 버전을 적지 않는다.
그런데 왜.. 이번꺼는 가장 최신이면서도 가장 많은 사람이 다운받은 version: '3.1.0'을 추가해서 안해봤을까ㅠ
repository 명칭에 hibernate 들어가 있는것만 final version 해보고 버전없이도 해보고 이것저것 해보고
제일 중요한 jakarta.persistence 는 안해봤었나보다ㅠ
어쨋든 해결해서 다행이다.....
[전문가를 위한 스프링5] 11.2 hibernate annotation @type error (0) | 2023.11.28 |
---|---|
[전문가를 위한 스프링5] 9.3 트랜잭션 프로퍼티 살펴보기 (0) | 2023.11.15 |
[전문가를 위한 스프링5] 6장 MYSQL FUNCTION 생성 에러 (0) | 2023.10.05 |
[전문가를 위한 스프링5]스프링에서 제공하는 어드바이스 (0) | 2023.09.06 |
[전문가를 위한 스프링5] 자바 구성 애너테이션 목록 (0) | 2023.09.04 |