Java Hibernate critères.setResultTransformer() initialise les champs de modèle avec des valeurs par défaut

Je suis nouveau sur mise en veille prolongée et je suis en train d'essayer d'obtenir certaines données de la base de données. Je ne veux pas toutes les données mais une projection d'une entité.

La chose est que, dans la boucle for, quand je reçois l'id et le nom de ma projection, on obtient les valeurs par défaut id=0 et nom=null au lieu de id=7 et name="Nom de 8" qui sont les enregistrements de l'entité d'origine dans la base de données. Savez-vous quelles sont les causes de ce problème?
La boucle for est dans le dernier code.

Ici est l'Élève de l'Entité

@Entity(name = "Students")
public class Student {
    @Id
    @GeneratedValue
    @Column(name = "StudentId")
    private int id;

    @Column(name = "Name", nullable = false, length = 50)
    private String name;

    @Column(name = "Grade")
    private Double grade = null;

    @ManyToOne(cascade = CascadeType.PERSIST)
    @JoinColumn(name = "FacultyId", nullable = false)
    private Faculty faculty;

    @ManyToMany(cascade = CascadeType.PERSIST)
    @JoinTable(
        joinColumns = @JoinColumn(name = "StudentId"),
        inverseJoinColumns = @JoinColumn(name = "CourseId"))
    private Collection<Course> courses;

    public Student() {
        this.courses = new HashSet<Course>();
    }

    //Setters and Getters for all fields
}

Ici est la StudentModel

public class StudentModel {
    private  int id;
    private String name;

    public int getId() {
        return this.id;
    }

    public void setId(int id) {
        this.id = id;
    }

    public String getName() {
        return this.name;
    }

    public void setName(String name) {
        this.name = name;
    }
}

Et le code je suis d'exécution

Session session = sessionFactory.openSession();
    session.beginTransaction();
    {
        Criteria criteria = session.createCriteria(Student.class);
        criteria.add(Restrictions.eq("name", "Name 8"))
                .setProjection(
                        Projections.projectionList()
                                .add(Projections.property("id"))
                                .add(Projections.property("name")))
                .setResultTransformer(
                        Transformers.aliasToBean(StudentModel.class));

        @SuppressWarnings("unchecked")
        List<StudentModel> students = criteria.list();

        for (StudentModel student : students) {
            System.out.println(student.getId());
            System.out.println(student.getName());
        }

        session.getTransaction().commit();
        session.close();
    }

OriginalL'auteur Denis Rizov | 2013-10-28