我有一个 MySQL 表来保存标签(即像 Stack Overflow 上使用的标签一样)。它只有一个 id (pk) 和一个用于保存标签本身的标签列。
我的标签实体的带注释的 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 似乎忽略了这一点,即我可以多次保存完全相同的标签,它只是创建一个新行而不是抛出异常。
我错过了什么或者这应该有效吗?
来自 JavaDoc 的UniqueConstraint (unique=true
on @Colunm
只是一个快捷方式):
此注释用于指定在为主表或辅助表生成的 DDL 中包含唯一约束。
所以它似乎并没有强制插入的唯一性。无论如何,您都应该在数据库中创建唯一约束。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)