1

JPA と Hibernate with RequestFactory (GWT 2.5) を使用して、フィールドに一意の値の制約を実装しようとしています。私の他の制約は JSR303 を使用して実装されており、違反を同じ方法でクライアントに報告したいと考えています ( を呼び出しonConstraintViolationますReceiver)。私が理解しているように、このタイプの制約を実装するための最良のオプションは、属性unique = trueを使用するときに設定することです。@Columnこれは、トランザクションがコミットされたときにデータベースによって強制され、クエリによる一意性のアサートに関連する競合状態を回避します。

メソッドをトランザクションの開始とコミットでラップする実装に関するこのスレッドのアドバイスに従いました。一意性制約に違反した場合、コミット操作は.ServiceLayerDecoratorinvokeRollbackException

一般的なエラーではなく、制約違反としてクライアントに伝播されるように、この例外を処理するにはどうすればよいですか?

を見てわかる限り、検証は呼び出しとは別に行われ、この方法でSimpleRequestProcessor失敗を伝播する明白な方法はないようです。invoke

4

1 に答える 1

0

一意性をチェックするためのカスタム制約を実装してみることができます。https://community.jboss.org/wiki/AccessingTheHibernateSessionWithinAConstraintValidatorも参照してください。

于 2013-01-09T11:04:49.070 に答える