Java bean이 있습니다. 이제 필드가 고유해야합니다.
다음 코드를 사용하고 있습니다.
@UniqueConstraint(columnNames={"username"})
public String username;
하지만 오류가 발생했습니다.
@UniqueConstraint is dissallowed for this location
고유 제한 조건을 사용하는 올바른 방법은 무엇입니까?
참고 : 나는 놀이 프레임 워크를 사용하고 있습니다.
답변
필드 값이 고유하도록 작성하면
@Column(unique=true)
String username;
@UniqueConstraint 주석은 테이블 수준에서 여러 개의 고유 키에 주석을 달기위한 것이므로 필드에 적용 할 때 오류가 발생합니다.
참고 문헌 (JPA TopLink) :
답변
다음과 같은 구문으로 클래스 수준에서 사용할 수 있습니다
@Entity
@Table(uniqueConstraints={@UniqueConstraint(columnNames={"username"})})
public class SomeEntity {
@Column(name = "username")
public String username;
}
답변
나는 현재 최대 절전 모드 및 JPA 2.0 주석과 함께 플레이 프레임 워크를 사용하고 있으며이 모델은 문제없이 작동합니다.
@Entity
@Table(uniqueConstraints={@UniqueConstraint(columnNames = {"id_1" , "id_2"})})
public class class_name {
@Id
@GeneratedValue
public Long id;
@NotNull
public Long id_1;
@NotNull
public Long id_2;
}
도움이 되었기를 바랍니다.
답변
참고 : Kotlin에서는 주석에서 배열을 선언하는 구문이 arrayOf(...)
대신{...}
@Entity
@Table(uniqueConstraints=arrayOf(UniqueConstraint(columnNames=arrayOf("book", "chapter_number"))))
class Chapter(@ManyToOne var book:Book,
@Column var chapterNumber:Int)
참고 : Kotlin 1.2부터는 [...]
구문 을 사용 하여 코드를 훨씬 간단하게 만들 수 있습니다
@Entity
@Table(uniqueConstraints=[UniqueConstraint(columnNames=["book", "chapter_number"])])
class Chapter(@ManyToOne var book:Book,
@Column var chapterNumber:Int)
답변
Way1 :
@Entity
@Table(name = "table_name", uniqueConstraints={@UniqueConstraint(columnNames = "column1"),@UniqueConstraint(columnNames = "column2")})
-여기서 Column1과 Column2는 모두 고유 제약 조건으로 작동합니다. 예 : 언제든지 column1 또는 column2 값이 일치하면 UNIQUE_CONSTRAINT 오류가 발생합니다.
Way2 :
@Entity
@Table(name = "table_name", uniqueConstraints={@UniqueConstraint(columnNames ={"column1","column2"})})
-column1과 column2 결합 된 값은 모두 고유 한 제약 조건으로 작용합니다.
답변
@Entity @Table(name = "stock", catalog = "mkyongdb",
uniqueConstraints = @UniqueConstraint(columnNames =
"STOCK_NAME"),@UniqueConstraint(columnNames = "STOCK_CODE") }) public
class Stock implements java.io.Serializable {
}
복합 키를 생성하는 데만 사용되는 고유 제한 조건은 고유하며, 고유 키로 결합 된 기본 키로 테이블을 표시합니다.
답변
테이블의 결합 된 기본 키에 대해 클래스 수준에서 @UniqueConstraint를 사용할 수 있습니다. 예를 들면 다음과 같습니다.
@Entity
@Table(name = "PRODUCT_ATTRIBUTE", uniqueConstraints = {
@UniqueConstraint(columnNames = {"PRODUCT_ID"}) })
공개 클래스 ProductAttribute {}
