3

のような私のエンティティ@NotNullといくつかの世代の検証はほとんどありません

@Id
@GeneratedValue(strategy = AUTO)
@Column(name = "ID")
private Long id;

@Column
@GeneratedValue(strategy = GenerationType.AUTO)
private Long referenceNumber;

EntityManager.merge()ただし、この値を呼び出すと、値は生成されません。注釈付きの null フィールドは@NotNull文句なしに渡されます。偶数idは生成されません。

どうにかしてこの世代をオンにする必要がありますか? どのように、どこで?

4

2 に答える 2

6

Merge()デフォルトでは、挿入前/更新前のイベント リスナーは呼び出されません。flush()後はmerge()それを行う必要があります。

于 2010-12-01T15:56:48.930 に答える
1

クラフタンの答えに加えて:

  • デフォルトでは、JPA 2.0の自動Bean検証は、検証プロバイダーが「環境に存在する」場合に機能します。それ以外の場合は、サイレントに機能しません。あなたは付け加えられます

    <validation-mode>CALLBACK</validation-mode>
    

    persistence.xml検証プロバイダーが見つからない場合にエラーを生成するために。

  • JPAは、任意の(非ID)プロパティの生成をサポートしていません。一部のJPAプロバイダーには拡張子が付いている場合があります。
于 2010-12-01T16:25:33.807 に答える