JPA에서 복합키를 사용하려면 별도의 ID 클래스가 필요

package com.poc_lotte_chatbot.entity;

import jakarta.persistence.Column;
import jakarta.persistence.Entity;
import jakarta.persistence.Id;
import jakarta.persistence.IdClass;
import jakarta.persistence.Table;
import java.math.BigDecimal;
import java.time.LocalDateTime;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;

@IdClass(ResocTopicRelId.class)
@Entity
@Table(name = "resoc_topic_rel", schema = "chatbi")
@Data
@NoArgsConstructor
@AllArgsConstructor
@Builder
public class ResocTopicRel {

    @Column(name = "org_party_id", nullable = false, length = 10)
    private String orgPartyId;

    @Id
    @Column(name = "resoc_id", nullable = false, precision = 10)
    private BigDecimal resocId;

    @Column(name = "resoc_gubun_code", nullable = false, length = 5)
    private String resocGubunCode;

    @Column(name = "resoc_name", nullable = false, length = 100)
    private String resocName;

    @Column(name = "prompt_topic_type", length = 100)
    private String promptTopicType;

    @Id
    @Column(name = "hist_str_date", nullable = false)
    private LocalDateTime histStrDate;

    @Id
    @Column(name = "hist_end_date", nullable = false)
    private LocalDateTime histEndDate;
}

역할:
  - 실제 데이터베이스 테이블을 매핑하는 엔티티 클래스
  - 테이블의 모든 컬럼(PK + 일반 컬럼)을 포함

  특징:
  - @IdClass(ResocTopicRelId.class): 복합키 클래스를 지정
  - @Id 어노테이션이 3개: 복합키를 구성하는 각 필드에 표시
  - 일반 컬럼들도 포함: orgPartyId, resocGubunCode, resocName, promptTopicType

  쓰임:
  - CRUD 작업의 대상
  - 비즈니스 로직에서 데이터를 담는 객체
  - Repository를 통한 데이터 조회/저장

 

package com.poc_lotte_chatbot.entity;

import jakarta.persistence.Embeddable;
import lombok.*;
import java.io.Serializable;
import java.math.BigDecimal;
import java.time.LocalDateTime;

@Embeddable
@Data
@NoArgsConstructor
@AllArgsConstructor
@EqualsAndHashCode
public class ResocTopicRelId implements Serializable {
    private BigDecimal resocId;
    private LocalDateTime histStrDate;
    private LocalDateTime histEndDate;
}

  역할:
  - 테이블의 복합 기본키(Composite Primary Key)를 표현하는 클래스
  - resoc_topic_rel 테이블의 PK는 3개 컬럼으로 구성: (resoc_id, hist_str_date, hist_end_date)
  - JPA에서 복합키를 사용하려면 별도의 ID 클래스가 필요

  특징:
  - @Embeddable: 다른 엔티티에 포함될 수 있는 클래스임을 표시
  - Serializable 구현: JPA 복합키 요구사항
  - equals()와 hashCode() 구현 필요: @EqualsAndHashCode로 자동 생성

  쓰임:
  - 엔티티의 고유 식별자 역할
  - 엔티티 조회, 비교, 해싱 작업에 사용
  - Repository에서 findById(ResocTopicRelId id) 형태로 사용

'#개발 > JPA' 카테고리의 다른 글

JPA 메서드 네이밍 규칙  (0) 2025.10.31
Spring Data JPA Query Method  (0) 2025.10.23

원인
npm install 실행 시, git:// 프로토콜을 이용하여 Github 저장소에 접근하지 못할 때 발생하는 오류

 

조치 방법

git config --global url."https://".insteadOf git://

 

 

'#개발 > node.js' 카테고리의 다른 글

node 애플리케이션  (0) 2025.10.19

+ Recent posts