6

エンティティクラスでコードを見つけました:

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

@Idが既に設定されている場合、 @NotNullアノテーションには値がありますか?

4

5 に答える 5

8

@NotNullのような検証目的のためのもの@Sizeです。ユーザー入力が正しいかどうかをチェックする検証エンジンのルールを定義します。これらのアノテーションの周りで検証を行うことは、オブジェクトが JPA オブジェクトでもあることを必ずしも示すわけではありませんが、2 つが一緒に使用されることがよくあります。

null 値を示すために DB レベルでの障害 (制約違反) に依存する代わりに 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>.  

したがって、null 値は処理されません。null 値を防ぐため@NotNullに、 とともに使用され@Idます。

于 2013-04-03T11:51:12.750 に答える
1

id / primary keyはテーブルで最も重要なフィールドであるため、テーブル内uniquelyの行を識別します。

だから、あってはならないnull

于 2013-04-03T11:49:52.363 に答える
1

はい、これにより id フィールドが null 不可になり、必須にする必要があります。

ただし、idを自動インクリメントしたい場合は、それを削除して追加します

@GeneratedValue(strategy=GenerationType.AUTO)

于 2013-04-03T11:52:23.890 に答える
0

私の理解では、これは静的分析用であり、休止状態/orm とは関係ありません。それは intellij 固有の注釈ですか?

したがって、コンパイル時に、@NotNull として注釈が付けられたフィールドに NULL を割り当てようとすると、警告が表示されます。

また、依存するコードは、戻り値が決して null にならないことを認識しています。

于 2013-04-03T11:49:08.793 に答える