を列挙型にする地図無効なデータベースの値が属性は、このような列挙型にマッピングされている多くの企業があります。JPA:私のデータモデルAに
@Enumerated(EnumType.STRING)
private MySpecialEnum enumValue;
をMySpecialEnumは、いくつかの固定値を定義します。マッピングは正常に動作し、データベースがカラムのNULL値を保持している場合、enumValue属性にもNULLが返されます。 問題は、私の影響を受けていないバックエンドモジュールが、値が設定されていないことを識別するためにCHAR列のスペースを使用していることです。だから私はNULL値の代わりにIllegalArgumentExceptionを取得します。
私の質問は:enum属性にマッピングする前に、データベースから読み取った値を変更できるJPAイベントはありますか? 書き込みアクセスには、@PrePersistがあります。ここでは、空値をスペースに変更できます。私は@ PostLoadイベントがあることを知っていますが、これはマッピングの後で処理されます。
Btw:WebSphere Application Serverに同梱のOpenJpaを使用しています。
おかげで多くのことを
はこれを参照してください。しかし、私はより一般的な解決策を探しています。あなたは、私はすべての単一の列挙型フィールドのためにこのコードを記述する必要が示唆されているが、私はそれを私のデータモデルのすべての列挙型フィールドのために実装する必要があります。 Btw私はエンティティを単純かつ愚かに保つのが好きです。 –