Java中的@UniqueConstraint注释

我有一个Java bean。 现在,我想确定这个领域应该是独一无二的。 我正在使用以下代码:

@UniqueConstraint(columnNames={"username"}) public String username; 

但是我得到一些错误:

 @UniqueConstraint is dissallowed for this location 

什么是使用唯一约束的正确方法?

注意:我正在使用播放框架。

为了确保字段值是唯一的,你可以写

 @Column(unique=true) String username; 

@UniqueConstraint注解用于注解表级别的多个唯一键,这就是为什么在将其应用于字段时出现错误的原因。

参考资料(JPA TopLink):

  • @UniqueConstraint
  • @柱

您可以在课堂上使用以下语法

 @Entity @Table(uniqueConstraints={@UniqueConstraint(columnNames={"username"})}) public class SomeEntity { @Column(name = "username") public String username; } 

我目前正在使用hibernate和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) 
  @Entity @Table(name = "stock", catalog = "mkyongdb", uniqueConstraints = @UniqueConstraint(columnNames = "STOCK_NAME"),@UniqueConstraint(columnNames = "STOCK_CODE") }) public class Stock implements java.io.Serializable { } 

唯一的约束只用于创build组合键,这将是唯一的。它将表示为主键组合为唯一的表。

您可以在类级别上使用@UniqueConstraint,以便在表中组合主键。 例如:

  @Entity @Table(name = "PRODUCT_ATTRIBUTE", uniqueConstraints = { @UniqueConstraint(columnNames = {"PRODUCT_ID"}) }) 

public class ProductAttribute {}