Java中的@UniqueConstraint注释

问题

我有一个Java bean。现在,我想确保该字段应该是唯一的。我使用以下代码:

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

但我得到一些错误:

@UniqueConstraint is dissallowed for this location

什么是使用独特约束的正确方法?

**注意:**我正在使用play框架。


#1 热门回答(307 赞)

要确保字段值是唯一的,你可以编写

@Column(unique=true)
String username;

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

参考文献(JPA TopLink):

  • @UniqueConstraint
  • @Column

#2 热门回答(80 赞)

你可以在类级别使用以下语法

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

#3 热门回答(29 赞)

我目前正在使用play框架和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;

}

希望它有所帮助。