복합키 생성문제, BeanCreationException

프로젝트

목록 보기
8/39

💻 에러 코드 : 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로 연결을 해줬더니 해결됐다.

도움 출처

profile
백엔드를 공부하고 있습니다.

0개의 댓글