SpringBootTest에러 - org.hibernate.id.IdentifierGenerationException

이형석·2024년 3월 20일
0

WelCheck 프로젝트 

목록 보기
4/22

문제상황
역시 이전과 마찬가지로 다음과 같다.
Member엔터티와 MemberRepository구현체를 작성 후, Member를 Repository에 저장하는 테스트를 실행한 상황

@Test
    public void 회원가입() throws Exception{
        Member member = new Member();
        // userId, password, name, username, address, sex, email
        member.setUserId("yasuo123");
        member.setPassword("password99");
        member.setName("kimyounghan");
        member.setUsername("best yasuo");
        Address address1 = new Address("South Korea", "Busan");
        member.setAddress(address1);
        member.setSex(Sex.Male);
        member.setEmail("yasuo123@gmail.com");
        em.persist(member);
        assertThat(member.getName()).isEqualTo(em.find(Member.class, member.getId()).getName());
    }

그리고 다음 에러가 발생했다.

org.hibernate.id.IdentifierGenerationException: Identifier of entity 'K2LJ.WelCheck_Backend.member.domain.member.Member' must be manually assigned before calling 'persist()' 

문제해결
에러메시지 끝자락에서 알 수 있듯이 엔터티매니저가 persist()를 실행할 수 없다는 것 같다.
구글링을 하다가 직접적인 원인을 알려주는 글은 아니었지만, 그 글을 보다 우연히 한번 확인해보게 되었는데 Member엔터티의 @GeneratedValue를 @Generated로 적은 것이 문제였다.
그래서 PK값이 제대로 생성되지 않아 위와 같은 문제가 발생했던 것 같다.
그리고 그 다음으로 네 번째 에러(링크)가 또 다시 발생했다.

profile
금융IT 개발자

0개의 댓글