[SPRING] Spring 데이터 쿼리에서 자식 객체 필터링
SPRINGSpring 데이터 쿼리에서 자식 객체 필터링
다음 도메인 모델이 있습니다.
재생 목록 -> 목록
@Entity
class Playlist{
// id, name, etc
List<PlaylistItem> playlistItems;
// getters and setters
}
@Entity
class PlaylistItem{
// id, name, etc.
Video video;
// getters and setters
}
@Entity
class Video{
// id, name, etc.
boolean isDeleted;
// getters and setters
}
그리고 내 저장소 :
public interface PlaylistRepository extends JpaRepository<Playlist, Long> {
List<Playlist> findAll();
}
이제 기존 비디오 만 포함 된 재생 목록을 반환하려면 어떻게해야합니까? 즉, 해당 재생 목록 항목에 할당 된 데이터베이스에 3 개의 비디오가 있고 그 중 하나의 비디오가 isDeleted를 true로 설정 한 경우 대신 두 개의 항목 만 가져와야합니다.
해결법
-
==============================
1.PlaylistRepository 인터페이스에서이 메서드를 선언하면됩니다.
PlaylistRepository 인터페이스에서이 메서드를 선언하면됩니다.
List<Playlist> findByPlaylistItemsVideoIsDeleted(boolean isDeleted);
그리고 이것을 이렇게 부르십시오.
playListRepository.findByPlaylistItemsVideoIsDeleted(false);
그러면 제거되지 않은 동영상이 포함 된 모든 재생 목록이 반환됩니다.
-
==============================
2.Maksim, 다음과 같이 @query 주석을 사용할 수 있습니다.
Maksim, 다음과 같이 @query 주석을 사용할 수 있습니다.
public interface PlaylistRepository extends JpaRepository<Playlist, Long> { @Query("select playlist from Playlist playlist fetch join playlist.playlistItems itens fetch join itens.video as video where video.isDeleted = false") List<Playlist> findAll(); }
또는 더 나은 방법 :
public interface PlaylistRepository extends JpaRepository<Playlist, Long> { @Query("select playlist from Playlist playlist fetch join playlist.playlistItems itens fetch join itens.video as video where video.isDeleted = :hasVideo ") List<Playlist> findPlayList(@Param("hasVideo") boolean hasVideo); }
-
==============================
3.Spring 데이터 스펙을 살펴볼 수 있습니다. 당신은 repository.findAll (s)를 호출하여 그것들을 사용한다;
Spring 데이터 스펙을 살펴볼 수 있습니다. 당신은 repository.findAll (s)를 호출하여 그것들을 사용한다;
사양을 사용하면 추가하려는 필터를 포함하여 쿼리에 임의의 조건을 추가 할 수 있습니다. 사양에 대한 또 다른 좋은 점은 형식이 안전 할 수 있다는 것입니다. 여길 봐:
http://docs.spring.io/spring-data/jpa/docs/current/reference/html/#specifications
from https://stackoverflow.com/questions/26684361/filter-child-object-in-spring-data-query by cc-by-sa and MIT license
'SPRING' 카테고리의 다른 글
[SPRING] Hibernate Validator와 함께 커스텀 ResourceBundle 사용하기 (0) | 2019.03.15 |
---|---|
[SPRING] MySQLNonTransientConnectionException : 클라이언트가 서버가 요청한 인증 프로토콜을 지원하지 않습니다. MySQL 클라이언트 업그레이드 고려 (0) | 2019.03.15 |
[SPRING] 쿼리에서 Spring 데이터 몽고 사용 OR (0) | 2019.03.15 |
[SPRING] 스프링 MVC 컨트롤러에서 폼 데이터를 Map으로 얻는 방법은? (0) | 2019.03.15 |
[SPRING] ng-file-upload를 사용하여 Spring에서 많은 파일을 업로드하려고 할 때 빈 목록 <MultipartFile> (0) | 2019.03.15 |