Используйте внутренний запрос:
select c FROM Customer c LEFT JOIN FETCH (select a from accounts a WHERE a.isActive=true) WHERE c.id = :id
У меня есть объект Customer с дочерними элементами @OneToMany. Я хочу выполнить соединение для извлечения, чтобы вернуть клиента с его соответствующими активными учетными записями (с учетом account.isActive = true). Если у клиента нет учетных записей, он также должен быть возвращен.
Для следующего JPQL для клиента, имеющего неактивные учетные записи, они действительно отфильтрованы, но клиент без учетных записей не возвращается:
@NamedQuery(name = "Customer.findById", query = "SELECT c FROM Customer c LEFT JOIN FETCH c.accounts a WHERE c.id = :id AND a.isActive=true")
Каким будет чистый способ написать запрос, чтобы оба случая были охвачены (клиент без учетных записей и клиент с активными учетными записями)?