8
Spring Data JPAでFetchModeが機能する仕組み
プロジェクトの3つのモデルオブジェクト(投稿の最後にあるモデルとリポジトリのスニペット)の間に関係があります。 私が呼び出すPlaceRepository.findByIdと、3つの選択クエリが実行されます。 ( "sql") SELECT * FROM place p where id = arg SELECT * FROM user u where u.id = place.user.id SELECT * FROM city c LEFT OUTER JOIN state s on c.woj_id = s.id where c.id = place.city.id これはかなり珍しい動作です(私にとって)。Hibernateのドキュメントを読んだ後、私が知る限り、常にJOINクエリを使用する必要があります。クラス(SELECTを追加したクエリ)にFetchType.LAZY変更し FetchType.EAGERた場合のクエリに違いはありません。Placeクラス(JOINを使用したクエリ)CityにFetchType.LAZY変更した 場合も同様ですFetchType.EAGER。 CityRepository.findById火の抑制を使用すると、2つの選択が行われます。 SELECT * FROM city c where …