question #1:
Most probably you need to add alias to name
field in select list
select s.name as name from com.company.generic.model.Student s where s.id=:id
so Hibernate can find the setName(String) method in Student.class
.
Using criteria the equivalent is
session.createCriteria(Student.class)
.add(Restrictions.eq("id",id))
.setProjection(Projections.property("name").as("name"))
.setResultTransformer(Transformers.aliasToBean(Student.class));
question #2:
Named query select list is the projection.
question #3:
see answers above