2

何かが見つからない場合にJPAで例外をスローする理由は何ですか?
追加: この動作は EJB2 で見られ、EJB3 からは削除されましたが、NoResultException をスローするQuery#getSingleResult()を呼び出すと残ります。

通常、何かが見つからないことが例外であるとは思いません。実際、これは場合によってはデフォルトの状況である可能性があり、他のほとんどの状況では少なくとも予想される場合です。ビジネス ロジックの一部として例外を使用するべきではなく、それが何であるか、方法がわからない、または処理したくない特殊なケースとしてのみ使用する必要があるという古いことわざを思い出します。

JPAでこのように実装されている理由を知っている人はいますか? 何かが見つからなかったときに null を返すことの欠点は何ですか?

4

1 に答える 1

1

getReference(class, primaryKey) を呼び出していますか? 主キーが存在しない場合、例外がスローされます。null オブジェクトを返したい場合は、代わりに find(class, primaryKey) を使用してください。getReference() は遅延ロードを許可しますが、find() は許可しませんが、その副作用として、遅延ロードを許可するには実際のオブジェクトを参照する必要があります。つまり、有効な PK を渡す必要があります。

于 2008-10-13T10:03:03.820 に答える