Java 在SQL中,我是否可以将唯一约束添加到';这不是必需的吗?

Java 在SQL中,我是否可以将唯一约束添加到';这不是必需的吗?,java,sql,jpa,Java,Sql,Jpa,我有一个标准的用户实体,包括姓名、手机号码和电子邮件地址。当然,我不希望在电子邮件地址中有任何重复,但我也不希望它是必需的。我不确定唯一约束是否允许多个记录为空。(这难道不违反独特性吗?)这可能吗?如果是这样,我如何在JPA中指定此约束?总之-是的,这是可能的。唯一性意味着列不能有两个相等的值nulls不是值,而是缺少值。因为它们不是值,所以不会影响唯一性,并且唯一列可以有任意多个nulls 在JPA中,您可以使用@列注释的unique属性来指定这一点: @Column(unique=true)

我有一个标准的用户实体,包括姓名、手机号码和电子邮件地址。当然,我不希望在电子邮件地址中有任何重复,但我也不希望它是必需的。我不确定唯一约束是否允许多个记录为空。(这难道不违反独特性吗?)这可能吗?如果是这样,我如何在JPA中指定此约束?

总之-是的,这是可能的。唯一性意味着列不能有两个相等的值nulls不是值,而是缺少值。因为它们不是值,所以不会影响唯一性,并且唯一列可以有任意多个
null
s

在JPA中,您可以使用
@列
注释的
unique
属性来指定这一点:

@Column(unique=true)
String email;

Unique constraint不允许多个空值,但有一个解决方案-

在电子邮件列上使用Unique constraint可以满足您的需要。这已经在这里得到了回答-


因为它们不是值,所以不会影响唯一性,并且唯一列可以有任意多个空值
=>。它依赖于RDBMS,但可以通过过滤的唯一索引轻松解决。这取决于数据库。一些数据库允许使用
NULL
值进行重复;有些仅允许一个
NULL
值。
@Column(unique=true)
String email;