This is exactly what projections are for. Here is an example:
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();
In fact, if you look at the documentation for "lazy property fetching" they specifically say:
"A different (better?) way to avoid unnecessary column reads, at least for read-only transactions is to use the projection features of HQL or Criteria queries. This avoids the need for buildtime bytecode processing and is certainly a preferred solution."
By the way, there is a related question that you may also be interested in:
Hibernate Query By Example and Projections
与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…