Hibernate - @ Column.unique用于非关键字段

时间:2014-04-01 23:56:24

标签: hibernate jpa

这是为了寻找验证而不是问题:

@Column.unique Hibernate检查&确保JPA级别的列条目的唯一性。 此处的列可以是任何列,不一定是复合键的键或部分。

非密钥字段上的

@Column.unique工作正常 - 检查字段值,如果它已经在我所期望的表中,则不插入它。 Hibernate在注释@Column(unique=true)上添加了一个索引 - 这也没关系。

但是,@Column.unique specs读取的内容与关键字段相同。

(Optional) Whether the property is a unique key. This is a shortcut for the UniqueConstraint annotation at the table level and is useful for when the unique key constraint is only a single field. This constraint applies in addition to any constraint entailed by primary key mapping and to constraints specified at the table level. 

我想知道我是否在这里遗漏了一些东西 - 我以后是否会遇到麻烦。

ps:我意识到使用了hibernate的唯一约束 确保列条目的唯一性 在JPA级别 - 并且不会确保它在数据库本身下面。 这不是问题。

PPS;我也知道在@UniqueConstraint中使用@Table属性作为替代方案。 这不是我之后的事情。它在桌面级别做同样的事情。

TIA。

1 个答案:

答案 0 :(得分:0)

据我所知,在生成DDL期间使用unique注释的javax.persistence.Column属性。

这意味着,如果您尝试从映射的类创建数据库模式,那么无论此属性存在并设置为true,都会将唯一约束添加到数据库中的相应列。

但是,根据JPA规范,它在应用程序运行时没有任何影响。