엔티티의 identity 전략

정태규·2023년 12월 21일
0

JPA

목록 보기
4/4

Test를 하다보니 이상한 점이 생겼다.

@Test
    public void findMembers() {
        for (int i = 1; i <= 5; i++) {
            Member m = memberRepository.save(new Member("member" + i));
        }

        for (int i = 1; i <= 5; i++) {
            Team t = teamRepository.save(new Team("team" + i));
        }
        //영속성 컨텍스트를 비워준다.
        em.flush();
        em.clear();

        List<Member> members = memberRepository.findMembers();

        for (Member member : members) {
            System.out.println("member = " + member);
        }

    }

Member entity의 id가 1,2,3,4,5가 나오고

Team entity의 id가 6,7,8,9,10이 나왔다.

왜 다른 엔티티인데 각자 1,2,3,4,5를 갖는게 아니지?? 하고 검색해 보았다.

문제는 identity 전략이었다.

@Id
    @GeneratedValue
    @Column(name = "member_id")
    private Long id;

이렇게 사용하고 있었는데, 전략상 Auto는 엔티티가 만들어지는 순서대로 id가 증가한다.

해결 방법으로 전략을 IDENTITY로 바꿔주었다.

@Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    @Column(name = "member_id")
    private Long id;

0개의 댓글