Giriş
Normal JPQL sorgusu yazıyoruz. Bu yöntem bence custom method eklemekten daha kolay.
Bu sorgularda dikkat edilmesi gereken şeyler şöyle
Şöyle yaparız.
Örnek - LEFT JOIN FETCH
Place ->has -> City -> has -> State ilişkisi olsun. Şöyle yaparız.
Normal JPQL sorgusu yazıyoruz. Bu yöntem bence custom method eklemekten daha kolay.
Bu sorgularda dikkat edilmesi gereken şeyler şöyle
1. Join ile her zaman alias kullanmak gerekir.Örnek - inner join
2. Positional parameter kullanmak istersek =?1 gibi yazmak gerekir.
3. Parametre ismini kullamak istersek =:myparameter gibi yazmak gerekir.
Şöyle yaparız.
@Query("select w from Way w join w.relations r where r.relationID=?1")
List<Way> selectAllWaysByRelationID(Long relationID);
Açıklaması şöyle.When using JOIN you need to use alias of Way with relations field like this, w.relations r instead of Way.relations.
Örnek - LEFT JOIN FETCH
Place ->has -> City -> has -> State ilişkisi olsun. Şöyle yaparız.
public interface PlaceRepository extends
JpaRepository<Place, Long>, PlaceRepositoryCustom {
@Query(value = "SELECT p FROM Place p LEFT JOIN FETCH p.author
LEFT JOIN FETCH p.city c LEFT JOIN FETCH c.state
where p.id = :id")
Place findById(@Param("id") int id);
}
public interface CityRepository extends JpaRepository<City, Long>,
CityRepositoryCustom {
@Query(value = "SELECT c FROM City c LEFT JOIN FETCH c.state where c.id = :id")
City findById(@Param("id") int id);
}
Hiç yorum yok:
Yorum Gönder