java - 混淆 : @NotNull vs. @Column(nullable = false) 与 JPA 和 Hibernate

标签 java hibernate jpa persistence hibernate-annotations

  1. 当它们出现在@Entity的字段/getter上时,它们之间有什么区别? (我通过 Hibernate 保存实体)。

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

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

    The annotated element must not be null

    但它没有谈到元素在数据库中的表示,那么为什么我要向列添加约束 nullable=false

最佳答案

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

关于java - 混淆 : @NotNull vs. @Column(nullable = false) 与 JPA 和 Hibernate,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7439504/

相关文章:

java - Lucene 搜索没有返回结果

mysql - hibernate - 两个日期之间的差异

java - 如何使用 hibernate 一般测试数据库连接

java - JPA @Query,具有限制的元素的平均值

java - java中这个线程安全高效吗

java - 获取基于月份的日期的上周日期范围

java - 为什么在一个 Set 上使用 FetchType.LAZY 时会出现 LazyInitializationException,而在另一 Set 上则不会?

java - Spring Boot ArrayList/JSON : add all Elements of a certain type to a list of this type

java - 设置项目的初始值时如何触发 itemStateChanged 事件?

java - spring mvc 中预加载对象的 application_start 事件?