2016-05-15 11 views
0

で参照されていないエンティティのために、私は、各実行オブジェクトがデバイスに@ManyToOne関係を持って実行してオブジェクトを返すJpaRepositoryを、持っているヌル設定します。すべてのリレーションは正しい形式で設定されます。春データJpaRepositoryは、クエリ

@Query("SELECT a FROM Run a WHERE a.date >= :startDate AND a.date <= :endDate AND (a.device.treeName IN (:devices))") 

実行オブジェクトはデバイスへの正しい参照を持っている:私はこのような要求を実行

しかし、。

しかし、この要求の

@Query("SELECT a FROM Run a WHERE a.date >= :startDate AND a.date <= :endDate") 

デバイスは常にnullです。

最初のリクエストを実行した後、同じトランザクションで2番目のリクエストを実行すると、それは機能します。これは最初のケースであるために起こっている

答えて

0

あなたがwhere句でa.device.treeName IN (:devices)をチェックしているため、デバイスオブジェクトもロードされます。私はあなたがtrueに遅延読み込みを設定していると思いますので、あなたがNULLのような装置を得るように、第2のケースで

、その、ロードされていません。

は、以下試してみてください。

@Query(" FROM Run a WHERE a.date >= :startDate AND a.date <= :endDate") 

にも下に試してみてください。

@Query(" select a FROM Run a JOIN FETCH a.device WHERE a.date >= :startDate AND a.date <= :endDate") 
+0

私は 'FetchType'は言及しなかった - ' EAGER'デフォルトではないでしょうか? – Nati

+0

FetchTypeはデフォルトでは遅延です。 – shankarsh15

+0

'EAGER'に変更し、' @ Query'を修正しました。まだ動かない。 – Nati

関連する問題