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