Просто отметьте коллекцию дочерних элементов как fetch = FetchType.LAZY
, не извлекайте ее в запросе и при необходимости инициализируйте коллекцию после запроса:
Parent p = (Parent) session.createCriteria(Parent.class).setMaxResult(1).uniqueResult();
// if necessary:
Hibernate.initialize(p.getChildren());
Если вы действительно хотите сохранить связь какeager fetched (что является плохой идеей, IMO), затем только загрузить идентификатор родителя в запросе, а затем получить родителя:
Long parentId = (Long) session.createCriteria(Parent.class)
.setProjection(Projections.id())
.setMaxResult(1)
.uniqueResult();
Parent p = session.get(Parent.class, parentId);