2017-09-29 6 views
0

私は1つの奇妙な動作の理由を見つけようとしています。私はいくつかの方法を含むSpringのデータリポジトリを持っていると言うことができます。エンティティが見つからないときは、IncorrectResultSizeDataAccessExceptionが発生します。複数が見つかったときに最初に返される

public Entity findByEntityKeyAndValidToDateAfterAndCorrectionDateAfter(BigInteger entityKey, Timestamp validToDate, Timestamp correctionDate); 

私は次のエラーでスタックトレースで問題を受け取ります:

org.springframework.dao.IncorrectResultSizeDataAccessException

私はこのクエリを実行するときに返されなければなら二つのレコードを追加することにしましたそのうちの一つは、このような署名を持っています。 例外をスローする代わりにこのメソッドを呼び出した後、クエリは結果の1つのみを返します。これは私の奇妙なのはなぜ私はログからクエリをコピーし、私のSQL開発者に同じパラメータでそれを実行する理由です。クエリは両方の結果を返します。

public List<Entity> findByEntityKeyAndValidToDateAfterAndCorrectionDateAfter(BigInteger entityKey, Timestamp validToDate, Timestamp correctionDate); 

この場合、クエリは2つの結果を返します。

なぜこのようなことが起こるのでしょうか?なぜこのクエリでこの例外がスローされないのですか?特異型を返す検索方法を使用する場合

スプリングデータバージョンが1.10.1.RELEASE

+0

どのレポジトリを使用していますか?それはCRUDリポジトリですか? – Rafa

+0

いいえ、リポジトリです。 –

+0

例外の完全なスタックトレースを投稿できますか? –

答えて

0

あり、以下のセマンティクスが適用されるべきである:(該当する場合)=>リターンnull又はOptional.empty見出さ

0要素。

1要素が見つかりました=>その要素を返します。

1つ以上の要素が見つかりました=>例外をスローする必要があります。

これは現在のマイナーバージョン(1.10.11)以上、現在のGAリリース(1.11.7)にアップグレードしてください。問題が解決しない場合は、https://jira.spring.io/browse/DATAJPA/?selectedTab=com.atlassian.jira.jira-projects-plugin:summary-panel

関連する問題