注解@Column(nullable = false) vs @NotNull 区别

deg*_*ath 1 java spring jpa bean-validation

我读了这个。但它并没有给ma一个明确的用法回答。

当我创建表和列时。

情况1:

@Column(nullable = false, length = 14)
@NotNull
private String something;
Run Code Online (Sandbox Code Playgroud)

案例2:

@Column(length = 14)
@NotNull
private String something;
Run Code Online (Sandbox Code Playgroud)

不是一样吗?我的意思是@NotNull 会更早抛出异常,所以有理由做 nullable = false 列吗?

Mic*_*ick 5

@Column 与数据库相关。如果您从 Java 代码自动创建数据库模式,则 nullable=false 将确保创建一个 NOT NULL 列,如果有其他应用程序访问您的数据库,这应该很有用。此外,您的应用程序可能会在将数据发送到数据库之前检查此约束。

@NotNull 与 Java 相关。如果未设置此属性,Java 将抛出异常。不需要数据库上下文。

这两个注释听起来很相似,但有两个不同的目的。可能有些库会自动从另一个注释推断出一个注释,但您始终可以同时使用这两个注释。当你这样做时,@NotNull 将在 @Column 之前被检查。