Criteria join one-to-many many-to-many
List<Contact> contact = session.createCriteria(T1.class) .createAlias("T2", "t22") .createAlias("T3", "t33") .add(Restrictions.eq("t22.property", "value")) .add(Restrictions.eq("t33.property", "value")) .list(); credit: https://forum.hibernate.org/viewtopic.php?f=1&t=985728