ここでは,クエリ実行時の注意事項について説明します。
- setMaxResultsメソッドまたはsetFirstResultメソッドで,コレクション同士がFETCH JOINを含むクエリを実行した場合,結果は保証されません。
- executeUpdateメソッド以外のQueryメソッドは,トランザクション内で実行する必要はありません。特にgetResultListとgetSingleResultメソッドはトランザクション内で実行する必要はありません。
- トランザクションスコープ永続化コンテキストのEntityManagerで,クエリが実行された場合の結果のエンティティは,detached状態になります。拡張永続化コンテキストのEntityManagerでクエリが実行された場合,すべてmanaged状態になります。
- QueryインタフェースのメソッドからスローされるNoResultExceptionとNonUniqueResultException以外の実行時例外はカレントのトランザクションをロールバックします。