我有一个标准的用户实体,包含名称、手机号码和电子邮件地址。当然,我不希望电子邮件地址有任何重复,但我也不希望它是必需的。我不确定一个唯一的约束是否允许多个记录为空。(这难道不违反独特性吗?(这可能吗?如果是,我如何在JPA中指定这个约束?
总之,是的,这是可能的。唯一性意味着列不能有两个相等的值。SQL中的null
不是值,而是缺少值。由于它们不是值,因此不会影响唯一性,并且一个唯一列可以有任意多个null
。
在JPA中,可以使用@Column
注释的unique
属性来指定:
@Column(unique=true)
String email;
唯一约束不允许多个null值,但有一个解决方案-https://www.red-gate.com/simple-talk/blogs/allow-nulls-unique-fields/
在电子邮件列上使用唯一约束将实现您想要的功能。这已经在这里得到了回答-允许在唯一列中为null。
@Column(unique=true)
String email;