2011-09-21 42 views
17
@Column(name = "userId") 
    @UniqueConstraint 
    private Integer userId; 

我正在使用这些注释将数据输入到数据库表中。 我想让userId字段唯一字段。但是当我做喜欢它它显示我的错误@UniqueConstraints is disallowed for this location.如何应用使用注释的唯一约束条件

回答

35
@Column(name = "userId",unique=true) 

,或者如果它的数据库生成ID你也可以做到这一点

@Id 
    @GeneratedValue(strategy=GenerationType.AUTO) 
    private Integer id; 
+3

这不是一个主键字段。 – MiguelMunoz

+1

@MiguelMunoz忽略了答案的第二部分,并且与第一部分一致,即“@Column(name =”userId“,unique = true)' – KNU

22

这里有一个如何使用@UniqueConstraint一个例子:

@Entity 
@Table(name = "contact", 
    uniqueConstraints = @UniqueConstraint(columnNames = {"name", "company_id"})) 
public class Contact { 
    ... 
} 

这指定“名称”列和“company_id”列的组合将是唯一的。

+1

UniqueConstraint注释包是什么? – MiguelMunoz

6

这是对@UniqueConstraint定义的Hibernate doc版本3.5的解释。

@Entity 
    @Table(name="tbl_sky",uniqueConstraints = {@UniqueConstraint(columnNames={"month", "day"})}) 
    public class Sky implements Serializable { 
     ... 
    } 

,这是Hibernate 4.3 example为@UniqueConstraint