1

Hibernate を ORM プロバイダーとして Spring JPA 2.0 を使用してアプリケーションを開発しています。データベースへのアクセスは読み取り専用で、レポートを生成します。データの取得中に検証を行いたいと思います。

@Column(name = "LOGICAL_ID", nullable = false)
@NotNull
private Long logicalId;

JSR 303 仕様を実装する Hibernate バリデーターを追加しました。しかし、フェッチ中に実行時例外や ConstraintViolationException をスローしませんか? 構成に何かを追加する必要がありますか、それとも何か不足していますか? 私に助言してください。

4

1 に答える 1

2

Java での相互検証の実装に投稿したように

次のコードを使用して、エンティティを手動で検証できます。

ValidatorFactory factory = Validation.byDefaultProvider().configure().traversableResolver(new CustomTraversableResolver() ).buildValidatorFactory();
Validator validator = factory.getValidator();
Set<ConstraintViolation<YourBaseClass>> constraintViolations = Validator.validate(myEntityToValidate);

これを自動的に実行したい場合は、'javax.persistence.validation.mode' プロパティが none に設定されている可能性があります ( http://docs.jboss.org/hibernate/entitymanager/3.6/reference/ ja/html/configuration.html )。

ただし、手動で検証することをお勧めします。これにより、制約が渡されない制御と詳細が得られるからです。

于 2012-07-17T12:35:05.727 に答える