Simplify and optimize playlist query.

This commit is contained in:
Kavin 2022-11-18 21:49:05 +00:00
parent d6bfc8f9ae
commit 8d23459406
No known key found for this signature in database
GPG key ID: 49451E4482CC5BCD

View file

@ -142,15 +142,10 @@ public class DatabaseHelper {
CriteriaBuilder cb = s.getCriteriaBuilder(); CriteriaBuilder cb = s.getCriteriaBuilder();
CriteriaQuery<PlaylistVideo> cr = cb.createQuery(PlaylistVideo.class); CriteriaQuery<PlaylistVideo> cr = cb.createQuery(PlaylistVideo.class);
var root = cr.from(PlaylistVideo.class); var root = cr.from(PlaylistVideo.class);
root.fetch("channel", JoinType.RIGHT);
cr.select(root); cr.select(root);
var sq = cr.subquery(String.class); root.fetch("channel", JoinType.LEFT);
{ var plRoot = cr.from(Playlist.class);
var sqRoot = sq.from(Playlist.class); cr.where(cb.equal(plRoot.get("playlist_id"), UUID.fromString(id)));
sq.select(sqRoot.get("videos").get("id"))
.where(cb.equal(sqRoot.get("playlist_id"), UUID.fromString(id)));
}
cr.where(root.get("id").in(sq));
return s.createQuery(cr).list(); return s.createQuery(cr).list();
} }