💻 에러 코드 : org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'entityManagerFactory' defined in class path resource [org/springframework/boot/autoconfigure/orm/jpa/HibernateJpaConfiguration.class]: Invocation of init method failed; nested exception is java.lang.NullPointerException
문제 상황
- 채팅 상세에서 채팅 테이블의 채팅룸번호를 FK이자 PK로 사용해야 하고, 거기에 생성일자를 더해서
생성일자 + 채팅룸번호를 복합키로 사용해야했다.
기존에 수업 때 배웠던@Embeddable어노테이션을 붙여서 복합키를 생성하는 방식으로 만들기로 했다.► Embedded 클래스 (복합키 클래스)
► 채팅 상세 Entity
근데 계속BeanCreationException으로 null값이 들어간다는 NullPointException이 나서, 스택오버 플로우를 찾아보니 hibernate와 관련된 dependency를 넣으라는 답변을 보고 따라했다.
🔦 그런데..?
이 방식으로는 해결이 안돼서 코드를 하나씩 주석처리해가면서 실행해봤다.@OneToOne으로는 처음 복합키 연결해봤기 때문에@OneToOne의 문제일거라 생각했다.
OneToOne이 아닌 복합키 생성 방식은 그 전에 다른 장바구니 Entity에서도 사용했던 방법이라 복합키 생성방식이 문제될거라 생각 못했었는데 여기서 문제였던 것이다.
해결
► Embedded 클래스
► Entity
Embedded 클래스에 복합키로 만들 멤버변수만 선언하는 것이 아니라, 복합키 클래스에 복합키로 구성할생성일자 + 채팅룸번호를@Column을 같이 붙여서 컬럼으로써 역할을 하도록 하고, 원하는 네임으로 지정해주면 된다.
기존 채팅 상세 Entity에는@OneToOne으로 그 Embedded클래스에 선언한 컬럼에MapsId로 연결을 해줬더니 해결됐다.
도움 출처