2017-08-28 9 views
0

BaseRepositoryCrudRepositoryに拡張され、@NoRepositoryBeanとタグ付けされています。他のすべてのリポジトリは、BaseRepositoryまで拡張されています。オーバーライドスプリングデータ保存方法

私のBaseRepositorysaveメソッドをオーバーライドしてカスタムエラーメッセージを表示するにはどうすればよいですか?たとえば、フロントエンド側で適切なメッセージを表示するには、すべてDataIntegrityViolationExceptionをキャッチする必要があります。どんな助けもありがたい。例えば

UPDATE

あなたは春のエンドポイント(@Endpoint)を作成した場合、その後、あなたはすべてのトラフィックを監視することができorg.springframework.ws.server.EndpointInterceptorを実装するクラスを作成することができます。私はすべてのデータ関連のトラフィックを監視することができる同様のクラスはありますか?

+0

なぜあなたはそのために 'save'メソッドをオーバーライドする必要がありますか?あなたはあなたのサービスでそれを行うことができますか、単にあなたのためにそれを行うための側面を使用します。 –

+0

JPAを使用しているときにsaveメソッドを上書きすることは実際には不可能です。トランザクションが呼び出されると例外がスローされる(EMをフラッシュする) –

+0

サービスでそれを上書きすると、私が持っているすべてのリポジトリ用のサービスを作成する必要があります。たぶん私は、保存メソッドをオーバーライドする必要はないが、リポジトリに関連するすべてのトラフィックが通過する他のクラスもあります。 – JamesLinux

答えて

1

私のコメントで説明したように、 'save'はあなたの目標を達成できません。 JPAはコード全体に例外をスローすることがあります。これはJPAの問題の1つです。

私はあなたの目標を達成するためにSpringのいくつかの中心的な方法を上書きすることができますが、それは本当にSpringの仕組みではありません。

代わりに、例外処理を基本的に登録する代わりに、必要に応じてSpringによって呼び出されます。

an article about this by Baeldungがあります。これは有望であり、Googleによって高く評価されています。

+0

ありがとう、この部分は: "新しいソリューション3 - 新しい@ControllerAdvice(春3.2と上記)"私の問題を解決しました。 – JamesLinux

関連する問題