Фильтр Java SQL по размеру реляционной таблицы

Я пытаюсь выбрать строки, в которых отношение один ко многим больше нуля.

Т.е. в SQL

query = sessionFactory.getCurrentSession().createQuery(
        "FROM UserSessionReport usr WHERE usr.userId = :userId 
         AND usr.userTracking.size > 0 ORDER BY created DESC");

И объединение таблицы Hibernate

@OneToMany(cascade = CascadeType.ALL)
@JoinColumn(name = "user_session_id", updatable = false)
@LazyCollection(LazyCollectionOption.FALSE)
private List<UserTracking> userTracking = new ArrayList<UserTracking>();

Это делает запрос очень медленным, то есть загрузка занимает 30 секунд.

Есть ли другой способ оптимизировать его, чтобы возвращать только те строки, где usr.userTracking.size > 0

0
задан beek 27 June 2019 в 00:14
поделиться