programing

SQL JPA - 여러 열을 기본 키로 지정

goodsources 2023. 3. 7. 21:21
반응형

SQL JPA - 여러 열을 기본 키로 지정

Column이 ID를 구성하기를 원하는 경우.

SQL의 예:

CONSTRAINT [PK_NAME] PRIMARY KEY ([Column1],[Column2],[Column3])

어떻게 하면 Jpa Entity 클래스에서 할 수 있을까요?컬럼 asnom을 통해서요?

ID 필드를 다음과 같이 설정합니다.

value = Column1 + Column2 + Column3 // aint working.

복합 키에 대한 클래스가 필요합니다.

public class CompositeKey implements Serializable {
    private int column1;
    private int column2;
    private int column3;
}

그런 다음 엔티티 클래스에서@IdClass주석:

@Entity
@IdClass(CompositeKey.class)
public class EntityExample {
    @Id
    private int column1;
    @Id
    private int column2;
    @Id
    private int column3;
    ...
    ...
}

이거면 될 것 같아.

@jklee가 언급한 다른 솔루션도 있습니다.둘 다 일해요, 그건 선호도의 문제예요.

클래스의 모든 필드가 기본 키의 일부인 경우 솔루션은 매우 간단합니다(@raul-cuth에서 제공하는 확장 솔루션).

@Entity
@IdClass(EntityExample.class)
public class EntityExample implements Serializable {

    @Id
    private int column1;

    @Id
    private int column2;

    @Id
    private int column3;
}

사용하다@Embeddable그리고.@EmbeddedId.

예:

@Entity
public class Project implements Serializable {
    @EmbeddedId ProjectId id;
}
 
@Embeddable
class ProjectId implements Serializable {
    int departmentId;
    long projectId;
}

상세한 것에 대하여는, http://www.objectdb.com/java/jpa/entity/id#Embedded_Primary_Key_ 를 참조해 주세요.

  1. 사용.@IdClass에 대한 주석@Entity그 뒤에 이어지는 수업@Id복합 기본 키의 일부인 개별 필드에 대한 주석입니다.
  2. 다른 방법으로도 사용할 수 있습니다.@Embeddable복합 프라이머리 키의 개별 필드로 구성될 수 있는 클래스, 그리고 이 클래스의 참조를 속성으로 사용할 수 있습니다.@Embedded의 주석.@Entity도움이 됐으면 좋겠네요

휴지 상태의 Entity-Class-to-SQL-DDL-Script 생성기는 모든 필드를 정렬하며 정의에 표시되는 순서에 관계없이 테이블 정의와 인덱스/제약 정의를 필드 정렬 순서로 작성합니다.

테이블 정의의 필드 표시 순서는 그다지 중요하지 않을 수 있지만 복합 인덱스의 필드 순서는 매우 중요합니다.따라서 키 필드는 이름으로 정렬할 때 인덱스에 필요한 순서로 정렬되도록 이름을 지정해야 합니다).

언급URL : https://stackoverflow.com/questions/41143913/sql-jpa-multiple-columns-as-primary-key

반응형