I have a aşağıdaki alanı modeli:Filtre alt nesne
Playlist
->List<PlaylistItem>
->Video
@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
}
Ve depo:
public interface PlaylistRepository extends JpaRepository<Playlist, Long> {
List<Playlist> findAll();
}
Şimdi, nasıl yapmak Yalnızca mevcut videolar içeren bir oynatma listesi döndürüyorum. Örneğin, söz konusu oynatma listesi öğesine atanan veritabanında üç video varsa ve bu videolardan biri de seçildi Doğru, o zaman sadece iki öğe almam gerekiyor.
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();
}
Veya daha iyi bir yol:
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);
}
Hazırda beklemede olan FilterDef ve Filter işlevine benzer bir şey hakkında soru soruyorsunuz. Ne yazık ki bahar veri jpa benzer bir şey kullanmak için kolay yolu bilmiyorum. FYI: http://stackoverflow.com/questions/11619174/hibernate-filter-children –