Я следующие субъекты Hibernateотчетливый внутреннее соединение HQL
public class Container {
...
@OneToMany
private List<ACLEntry> aclEntries;
}
Для обеспечения своих экземпляров контейнера я использую следующий объект:
public class ACLEntry {
...
private Long sid;
private boolean principal;
private Integer mask;
}
В HQL-запросы будут создаваться автоматически, поэтому для поиска экземпляры контейнеров, следующий запрос будет создан:
select container from Container container
inner join container.aclEntries as aclEntry
with bitwise_and (aclEntry.mask, 1) = 1 and
(aclEntry.sid = :userId or aclEntry.sid = :roleId)
Проблема заключается в том, что соединение aclentry может вернуть 2 результата, которые приведут к дублированию результатов контейнера.
Есть ли у кого-нибудь идеи, как это решить?
Мы используем внутренний механизм запросов для создания запросов hql, поэтому я не могу добавить разные, потому что это повлияет на все запросы. Я думаю, что отдельные должны применяться только к соединению, или я ошибаюсь? –
+1. Это правильное и простое решение. Если механизм запроса не может его обработать, улучшите механизм запросов. –