Java中@Id没有@Column(nullable=false)的作用?

4

我想确认一下@Id注解在数据库中是否添加了两个约束:

  • nullable=false
  • unique=true

? 我在互联网上看到很多语法类似的例子。

@Id
@Column(name="xxx",nullable=false)
BigInteger id

这正确吗?我真的需要这个"nullable=false"吗?


相关链接:https://dev59.com/BmIj5IYBdhLWcg3wHh3_ - user1531971
提到了@Id注释,但没有回答我的具体问题。 - user8371723
“name=XXX”这个理由已经足够了,不是吗? - Nate T
2个回答

8

是的,你说得对。如果使用Hibernate架构生成机制,数据库中的所有@Id列默认情况下都将为NOT NULL并具有唯一索引。

另一方面,在任何其他方式创建模式时,@Column(nullable=false)声明绝对没有意义。


0

你可能会看到这两个属性一起使用的原因是 @Column 上的 name 属性。它的 name 属性允许你在生成的表中显式地选择列的名称,在 JPA 提供默认名称的情况下。有时我仅仅为了给我的列命名而使用 @Column

至于 nullable 属性,我同意你的看法。在那种情况下它是毫无用处的。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接