2011-03-13 2 views
0

Java에서 숫자 ID와 사용자 이름 (자연 기본 키)을 가진 클래스가 있습니다.Hibernate Annotation, 두 개의 기본 키를 정의하는 방법

ID와 사용자 이름을 기본 키 (결합하지 않음)로 지정합니다.

Create table (
    Int ID PK, 
    String Username PK, 
    String name, 
    String password 
) 

Java 용 최대 절전 모드 주석으로 어떻게 할 수 있습니까?

답변

2

최대 절전 모드에서는 하나의 기본 키 (단일 필드, 복합 키 등) 만 가질 수 있습니다. 주된 이유는 내가 아는 대부분의 데이터베이스가 단일 또는 복합 기본 키만 지원한다는 것입니다. 귀하의 설명에서 그것은 정말로 당신이 유일무이 한 사용자 이름을 찾는 것처럼 들립니다. 이를 위해 필드를 기본 키 열로 정의 할 필요가 없습니다. 대신, 해당 필드에 고유 제한 조건을 추가 할 수 있습니다. 주석을 사용하는 경우, 당신은 다음이 유사한 구성합니다 :

@Table(name="table", 
    uniqueConstraints = {@UniqueConstraint(columnNames={"username"})} 
) 

최대 절전 모드 구성에서 DB 테이블을 생성,이 테이블에 사용자 이름 열에 고유 제한 조건뿐만 아니라 ID를 기본 정의한다면 키. 데이터베이스 스키마를 수동으로 작성하는 경우 데이터베이스에 직접 제약 조건을 추가하려고합니다. 다음은 Oracle 용 예제입니다.

CREATE TABLE table 
(  id   numeric(10) not null, 
     username varchar2(50) not null, 
     primary key (id), 
     CONSTRAINT username_unique UNIQUE (username) 
); 
관련 문제