のJavaエンティティクラスで@Idフィールドに@NotNull注釈を入れるためにどのような理由です:は、私はエンティティクラスのコードを発見した
@Id
@NotNull
@Column(name = "ID")
private Long id;
@Idがすでに設定されている場合@NotNull注釈が値を持っていますか?
のJavaエンティティクラスで@Idフィールドに@NotNull注釈を入れるためにどのような理由です:は、私はエンティティクラスのコードを発見した
@Id
@NotNull
@Column(name = "ID")
private Long id;
@Idがすでに設定されている場合@NotNull注釈が値を持っていますか?
@NotNull
が@Size
などの検証目的のためにある追加。これは、検証エンジンがユーザ入力がOKかどうかをチェックするためのルールを定義します。これらのアノテーションの周りで検証を行っても、オブジェクトがJPAオブジェクトであることは必ずしも分かりませんが、2つはよく一緒に使用されます。
DBレベル(制約違反)での失敗に頼ってnull値を示すのではなく、javax.validationを使用している場合は、両方の注釈を使用する必要があります。
ありがとう+1。最も直接的な答え。 – gavenkoa
これは静的解析用であり、hibernate/ormとは関係がありません。それはintellij固有の注釈ですか?
コンパイル時に、@NotNullとして注釈が付けられたフィールドにNULLを割り当てるときに警告することができます。
依存しているコードは、返される値が決してnullにならないことを知っています。
JSR303(Bean Validation)はJPAのようなもので、Java EEの一部です。 – BalusC
id/primary key
がテーブル内で最も重要なものであるので、uniquely
はテーブル内の行を識別します。
したがって、null
であってはなりません。それがnull値の世話をしないように
@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フィールドをnullにできないようにします。必須です。
しかし、あなたは、idは自動インクリメントしたい場合は、それを削除し、
@GeneratedValue(戦略= GenerationType.AUTO)
データベースの自動インクリメントされた値またはシーケンスを使用している場合は、 '@ NotNull'アノテーションを使用しないでください。エンティティを永続化しようとすると例外がスローされます。 – greenkode
Hm ...私はコードを単純化しますが、元のものには '@ SequenceGenerator'と' @ GeneratedValue'があり、挿入時に実行時にエラーはありません...異なるライブラリとバージョンが異なって動作するようです。興味ありがとう。 +1。 – gavenkoa