복합키 - @GeneratedValue 2

PPakSSam·2022년 1월 14일
0
post-thumbnail

복합키 목차

복합키 - @GeneratedValue 목차


@IdClass 예제2

복합키에서는 @GeneratedValue를 통해 기본키를 자동생성할 수 없다

앞서 @IdClass - 식별관계에서 위의 주장은 틀리지 않았을까? 주장했다.
그런데 뭔가 제대로 주장을 하려면 위의 주장을 뒷받침하던 예시를 반박해야 제대로 반박한 것이 아닐까 싶어서 그 예시와 비슷한 예시를 들어서 증명하고자 한다.

실험한 코드는 다음과 같다.

@Getter
@NoArgsConstructor(access = AccessLevel.PROTECTED)
@IdClass(MultiKey.MultiKeyId.class)
@Entity
public class MultiKey {

    @SequenceGenerator(
            name = "multikey_id_seq1",
            sequenceName = "multikey_id_seq1",
            allocationSize = 1
    )
    @Id 
    @GeneratedValue(strategy = GenerationType.SEQUENCE, generator = "multikey_id_seq1")
    @Column(name = "MULTIKEY_ID1")
    private Long id1;

    @SequenceGenerator(
            name = "multikey_id_seq2",
            sequenceName = "multikey_id_seq2",
            allocationSize = 1
    )
    @Id 
    @GeneratedValue(strategy = GenerationType.SEQUENCE, generator = "multikey_id_seq2")
    @Column(name = "MULTIKEY_ID2")
    private Long id2;

    private String name;

    public MultiKey(String name) {
        this.name = name;
    }

    @Data
    @NoArgsConstructor
    @AllArgsConstructor
    public static class MultiKeyId implements Serializable {

        private Long id1;
        private Long id2;
    }
}

위의 코드처럼 작성후 다음과 같이 테스트를 하였다.
 @Test
 @DisplayName("multikey save Test")
 public void saveTest() throws Exception {

     MultiKey multiKey = new MultiKey("테스트 멀티키1");
     multiKeyRepository.save(multiKey);
 }

잘 들어감을 확인할 수 있다.

참고

포스팅의 전체적인 코드는 깃헙코드에서 볼 수 있다.

profile
성장에 대한 경험을 공유하고픈 자발적 경험주의자

0개의 댓글