JPA의 여러 고유 제약


84

JPA를 사용하여 서로 다른 열 집합에 여러 개의 고유 제약 조건이 있어야 함을 지정하는 방법이 있습니까?

@Entity
@Table(name="person", 
       uniqueConstraints=@UniqueConstraint(columnNames={"code", "uid"}))
public class Person {
    // Unique on code and uid
    public String code;
    public String uid;

    // Unique on username
    public String username;

    public String name;
    public String email;
}

최대 절전 모드 특정 주석을 보았지만 여전히 최대 절전 모드와 데이터 핵 사이를 결정하고 있으므로 공급 업체별 솔루션을 피하려고합니다.

답변:


130

@Table의 속성은 uniqueConstraints실제로 이들의 배열을 받아들입니다. 귀하의 예제는 단일 요소가있는 배열의 속기 일뿐입니다. 그렇지 않으면 다음과 같이 보일 것입니다.

@Table(name="person",  uniqueConstraints={
   @UniqueConstraint(columnNames={"code", "uid"}),
   @UniqueConstraint(columnNames={"anotherField", "uid"})
})

고유 제약 조건이 하나의 필드 만 기반으로 할 때마다 @Column(unique=true)해당 열에서 사용할 수 있습니다 .


2
나는 현재이 주석을 가지고 있지만 테이블이 이미 존재하는지 (그리고 업데이트하도록 설정되어 있는지) 또는 테이블을 제거하고 Hibernate가 자동으로 생성하도록 할 경우 Hibernate가 테이블에 대한 인덱스를 생성하지 않는 것처럼 보입니다. 내가 뭔가를 놓치고 있습니까?
Kevin M
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.