6

我在实体类中找到了代码:

@Id
@NotNull
@Column(name = "ID")
private Long id;

当@Id已经设置时,@ NotNull注释是否有价值

4

5 回答 5

8

@NotNull用于验证目的,例如@Size. 它为验证引擎定义了检查用户输入是否正常的规则。围绕这些注解进行验证并不一定表明该对象也是 JPA 对象,但两者经常一起使用。

如果您使用 javax.validation 而不是依赖数据库级别的失败(违反约束)来指示空值,那么您应该使用这两个注释。

于 2013-04-03T17:38:36.647 回答
2

@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.

于 2013-04-03T11:51:12.750 回答
1

由于id / primary key是表中最重要的字段,它uniquely标识表中的一行。

所以不应该null

于 2013-04-03T11:49:52.363 回答
1

是的,这将使您的 id 字段不可为空,您必须强制执行。

但是,如果您希望 id 自动递增,则将其删除并添加

@GeneratedValue(策略=GenerationType.AUTO)

于 2013-04-03T11:52:23.890 回答
0

我的理解是这是为了静态分析,与hibernate/orm无关。它是intellij特定的注释吗?

因此,在编译时,当您将 NULL 分配给已注释为 @NotNull 的字段时,您可能会收到警告。

并且任何依赖的代码都知道返回的值永远不会为空。

于 2013-04-03T11:49:08.793 回答