Vous pouvez utiliser Session # createFilter qui est une forme de HQL qui fonctionne explicitement sur les collections. Par exemple, vous mentionnez parents et enfants, donc si vous avez une personne p la forme la plus simple serait:
session.createFilter(p.getChildren(), "").list()
Ce simplement vous renvoie une liste des enfants. Il est important de noter que la collection retournée n'est pas "live", elle n'est en aucun cas associée à p.
La partie intéressante vient du second argument. C'est un fragment HQL. Ici, par exemple, vous voudrez peut-être:
session.createFilter(p.getChildren(), "select count(*)").uniqueResult();
Vous avez dit que vous avez une clause where, vous voudrez peut-être aussi:
session.createFilter(p.getChildren(), "select count(*) where this.age > 18").uniqueResult();
avis il n'y a de l'article. C'est-à-dire que la clause from est implicite de l'association.Les éléments de la collection reçoivent l'alias 'this' de sorte que vous pouvez vous y référer à partir d'autres parties du fragment HQL.
Prenez garde que vous semblez avoir peu de contrôle sur la clé utilisée lors de la vérification de l'existence avec contient sur un LazyCollection. C'est un peu un gotcha parce que vous ne pouvez pas utiliser les clés naturelles pour faire le contrôle de l'existence. –