Вы можете избавиться от дубликатов с помощью ключевого слова DISTINCT
:
SELECT DISTINCT parent FROM Parent parent JOIN parent.child child WHERE ...
EDIT: ключевое слово DISTINCT
используется для повторного копирования дубликатов из результатов запроса, независимо от причины существования этих дубликатов. Иногда причиной являются дубликаты записей БД. Но чаще, дубликаты являются следствием JOIN
заявлений, поэтому ваш прецедент является полностью законным.
Тем не менее, вы можете избежать явных объединений и ключевого слова DISTINCT
, сделав отношение двунаправленным. Затем вы можете использовать неявные соединения посредством навигации:
SELECT parent FROM Parent parent WHERE parent.children...