Я думаю, что ключевое слово not exist
- хороший выбор.
Предположим, у меня есть таблица с именем "giraffe", с id в качестве первичного ключа, и еще одна таблица с именем "Engineer" со столбцом под названием "giraffe", который ссылается на таблицу "giraffe" как внешний ключ, а затем следующий запрос HQL у меня сработало:
from Giraffe giraffe where not exists (from Engineer as engineer where engineer.giraffe = giraffe.id )