문제상황
역시 이전과 마찬가지로 다음과 같다.
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값이 제대로 생성되지 않아 위와 같은 문제가 발생했던 것 같다.
그리고 그 다음으로 네 번째 에러(링크)가 또 다시 발생했다.