我在实体类中找到了代码:
@Id
@NotNull
@Column(name = "ID")
private Long id;
当@Id已经设置时,@ NotNull注释是否有价值?
我在实体类中找到了代码:
@Id
@NotNull
@Column(name = "ID")
private Long id;
当@Id已经设置时,@ NotNull注释是否有价值?
@NotNull
用于验证目的,例如@Size
. 它为验证引擎定义了检查用户输入是否正常的规则。围绕这些注解进行验证并不一定表明该对象也是 JPA 对象,但两者经常一起使用。
如果您使用 javax.validation 而不是依赖数据库级别的失败(违反约束)来指示空值,那么您应该使用这两个注释。
@Id
习惯于
* Specifies the primary key of an entity.
* The field or property to which the <code>Id</code> annotation is applied
* should be one of the following types: any Java primitive type;
* any primitive wrapper type;
* <code>String</code>;
* <code>java.util.Date</code>;
* <code>java.sql.Date</code>;
* <code>java.math.BigDecimal</code>;
* <code>java.math.BigInteger</code>.
所以它不处理空值。为了防止空值@NotNull
与@Id
.
由于id / primary key
是表中最重要的字段,它uniquely
标识表中的一行。
所以不应该null
。
是的,这将使您的 id 字段不可为空,您必须强制执行。
但是,如果您希望 id 自动递增,则将其删除并添加
@GeneratedValue(策略=GenerationType.AUTO)
我的理解是这是为了静态分析,与hibernate/orm无关。它是intellij特定的注释吗?
因此,在编译时,当您将 NULL 分配给已注释为 @NotNull 的字段时,您可能会收到警告。
并且任何依赖的代码都知道返回的值永远不会为空。