3

EntityManagerで通常のDAOオブジェクトにSpringDataJPAを使用することから切り替えたところ、nullを返す代わりに.getSingleResult()がNoResultExceptionをスローすることがわかりました。すべてのDAO関数をTry{}Catch {}で囲み、NoResultExceptionsの代わりにnullを返すアスペクトを追加する方法はありますか?

または、DAOオブジェクトをすべて手動で囲むことなく、例外ではなくnullを返すように強制する他の方法はありますか?

4

2 に答える 2

3

私があなたなら、別のエンティティマネージャー(デフォルトのエンティティマネージャーを継承します)を実装し、nullを返すためにgetSingleResult()をtry/catchでオーバーライドします。

次に、新しいEntityManagerをSpringコンテキストに挿入します。

于 2012-02-15T08:16:33.653 に答える
2

DAOインターフェースの実行にAroundAviceを追加し、NREをキャッチしてnullを返します。より簡単で、どのJPA実装でも機能し、結果が見つからない場合にQueryインターフェースにNREをスローさせるJPA仕様を破ることはありません。

于 2012-02-15T12:33:32.603 に答える