Programing

Java의 @UniqueConstraint 주석

lottogame 2020. 6. 13. 10:13
반응형

Java의 @UniqueConstraint 주석


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 {}


고유 한 주석은 속성 선언 바로 위에 위치해야합니다. UniqueContraints는 데이터 클래스 선언 위의 @Table 주석으로 이동합니다. 아래를보십시오 :

@Entity
@Table(uniqueConstraints= arrayOf(UniqueConstraint(columnNames = arrayOf("col_1", "col_2"))))
data class Action(
        @Id @GeneratedValue @Column(unique = true)
        val id: Long?,
        val col_1: Long?,
        val col_2: Long?,
)

참고URL : https://stackoverflow.com/questions/3126769/uniqueconstraint-annotation-in-java

반응형