Hibernate CriteriaQuery. Как написать вложенный запрос?
Есть 2 таблицы - function и tech_expert
function имеет поля id, challenge_id и function_id
tech_expert имеет поля id, function_id, expert_id
Таблица tech_expert хранит в себе ключ function_id из таблицы function
public class FunctionEntity extends BaseEntity<Long> {
@OneToMany(cascade = CascadeType.ALL, orphanRemoval = true)
@JoinColumn(name = "FUNCTION_ID")
private Set<TechExpertEntity> techExperts = new HashSet<>();
//другие столбцы
}
Написал для них запрос в бд, который получает все challenge_id из таблицы function для значений function_id из подзапроса и он работает, но пытаюсь его перенести в java в виде CriteriaQuery, но пока не понимаю как переписать полностью этот запрос так, что бы hibbernate в итоге сгенерил запрос аналогичный тому, что написан руками, удалось написать только часть от этого (вложенный запрос)
Гугление на эту тему выдаёт в основном примеры где используется одна Entity
Буду крайне благодарен за любой совет или помощь в этом вопросе
SELECT challenge_id FROM function
WHERE EXISTS(SELECT function_id FROM tech_expert where expert_id = '10')));
Subquery subQuery = criteriaQuery.subquery(TechExpertEntity.class);
Root subRoot = subQuery.from(TechExpertEntity.class);
Predicate predicate = criteriaBuilder.and(
criteriaBuilder.equal(subRoot.get("expertId"), "10"));