Вы можете использовать Session # createFilter, который является формой HQL, которая явно работает с коллекциями. Например, вы упоминаете «Родитель и дети», поэтому, если у вас есть «Человек р», наиболее простой формой будет:
session.createFilter( p.getChildren(), "" ).list()
Это просто возвращает вам список детей. Важно отметить, что возвращаемая коллекция не является «живой», она никак не связана с p.
Интересная часть вытекает из второго аргумента. Это фрагмент HQL. Вот например, вы можете захотеть:
session.createFilter( p.getChildren(), "select count(*)" ).uniqueResult();
Вы упомянули, что у вас есть предложение where, поэтому вы также можете захотеть:
session.createFilter( p.getChildren(), "select count(*) where this.age > 18" ).uniqueResult();
Обратите внимание, что в предложении нет. То есть предложение from подразумевается от ассоциации. Элементы коллекции имеют псевдоним «this», поэтому вы можете ссылаться на него из других частей фрагмента HQL.