0

私はスプリングデータと休止状態を使用します。今私はモデルにいくつかのバリデーションを適用したいと思います。ほとんどの場合、ヌルチェックなどの単純な検証を適用したいと思いますが、場合によっては電子メール検証などのより厳密な検証を適用したい場合もあります。 @EmailアノテーションであるHibernateバリデーターに非常に便利な機能が見つかりました。それは非常にうまく動作しますが、ここで問題です:スプリングデータとハイバネート - モデル検証 - 例外変換

私がnull値を持つモデルを保存しようとすると、次の例外がスローされます。

org.springframework.dao.DataIntegrityViolationException

しかし、私はnull以外のが、電子メール以外の値を持つモデルを保存しようとすると、次の例外がスローされます(のは asdfgh をしましょう):

javax.validation.ConstraintViolationException

両方のケースでモデルが検証に合格しなかったので、私は、両方のケースで例外の一種類のみを見ることがを大好きだと私はちょうど私の例外に一つだけ例外タイプを心配したいと思いますハンドリングコード。

PersistenceExceptionTranslationPostProcessorを自分のBean設定に追加しようとしましたが、何も変更されていないようです。

この例外を「統一する」方法がありますか?

モデル:

@Entity 
public class ValidationModel { 
    ... 

    @Email 
    @Column(nullable = false) 
    private String email; 

    ... 
} 

リポジトリ:

public interface ValidationModelRepository extends JpaRepository<ValidationModel, Long> { 
} 

答えて

1

@Column(nullable = false)は、検証チェックではありません。これはJPAの制約です。

値がNULLでないことを確認するには、@NotNullを使用してください。

+0

あなたは正しいです!私はどうしたらそれを忘れることができましたか? :)ありがとう! –

関連する問題