Hibernate - 忽略唯一列约束

时间:2010-11-05 10:47:16

标签: java mysql hibernate

我有一个MySQL表来保存标签(就像Stack Overflow上使用的那样)。它只有一个id(pk)和一个标记列来保存标记本身。

我的Tag实体的带注释的get方法如下所示。

@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
@Column(name = "id", unique = true, nullable = false)
public int getId() {
    return this.id;
}

@Column(name = "tag", unique = true, nullable = false)
public String getTag() {
    return this.tag;
}

我在标记上使用了唯一的列约束,因为给定标记永远不应该有多行。但是,Hibernate似乎忽略了这一点,即我可以多次保存完全相同的标记,它只是创建一个新行而不是抛出异常。

我错过了什么或者这应该有效吗?

2 个答案:

答案 0 :(得分:3)

来自UniqueConstraint的JavaDoc(unique=true上的@Colunm只是一条捷径):

  

此注释用于指定在主表或辅助表的生成DDL中包含唯一约束。

因此,它似乎不会在插入时强制执行唯一性。无论如何,您应该在数据库中创建一个唯一约束。

答案 1 :(得分:0)

你想念这只是一个信息。

您还应该在数据库中的列上添加约束。