小编典典

区分:@NotNull 与 @Column(nullable = false) 与 JPA 和 Hibernate

all

  1. 当它们出现在 a 的字段/吸气剂上时@Entity,它们之间有什么区别? (我通过Hibernate 持久化实体)。

  2. 它们各自属于什么框架和/或规范?

  3. @NotNull位于 内javax.validation.constraints。在javax.validation.constraints.NotNulljavadoc中它说

带注释的元素不能为空

但它并没有说明元素在数据库中的表示,那么为什么我nullable=false要在列中添加约束呢?


阅读 62

收藏
2022-05-19

共1个答案

小编典典

@NotNull是一个JSR
303 Bean
Validation
注解。它与数据库约束本身无关。然而,由于 Hibernate 是 JSR 303
的参考实现,它智能地获取这些约束并将它们转换为您的数据库约束,因此您以一个的价格获得两个。@Column(nullable = false)是声明列不为空的
JPA 方式。即前者用于验证,后者用于指示数据库模式详细信息。您只是从 Hibernate 获得了一些关于验证注释的额外(欢迎!)帮助。

2022-05-19