Это именно то, для чего нужны прогнозы. Вот пример:
Criteria cr = session.createCriteria(User.class)
.setProjection(Projections.projectionList()
.add(Projections.property("id"), "id")
.add(Projections.property("Name"), "Name"))
.setResultTransformer(Transformers.aliasToBean(User.class));
List<User> list = cr.list();
На самом деле, если вы посмотрите на документацию для "отложенной выборки свойств", они специально скажут:
"Другой (лучший?) Способ избежать ненужного чтения столбцов, по крайней мере для транзакций только для чтения, состоит в использовании функций проекции запросов HQL или Criteria. Это позволяет избежать необходимости обработки байт-кода во время сборки и, безусловно, является предпочтительным решением. . "
Кстати, есть связанный вопрос, который вас также может заинтересовать:
Запрос гибернации по примерам и проекциям