Hibernate : java.lang.ClassCastException: java.lang.Entier ne peut pas être jeté à java.lang.Double

Mon Personnel de l'Entité définie dans Java est comme ceci :

final public class Staff {
    private int staffId;
    private String firstName = null;
    private String lastName = null;
    private String Email = null;
    private double salary;
    //and the setters and getters
}

Mon code de Requête :

SessionFactory sessionFactory = new Configuration().configure().buildSessionFactory();
Session session = sessionFactory.openSession();
Staff staff = null;
try {
    Criteria criteria = session.createCriteria(dto.Staff.class);
    criteria.add(Restrictions.eq("salary", 1000000));
    staff = (Staff) criteria.uniqueResult();
} catch(Exception e) {
    System.out.println("Error : " + e);
} finally {
    session.close();
}

Mais lorsque je l'exécute, j'obtiens un message d'erreur qui dit :

java.lang.ClassCastException: java.lang.Integer cannot be cast to java.lang.Double

Si je convertir explicitement le nombre à un double cela fonctionne :

criteria.add(Restrictions.eq("salary", (double) 1000000));

Est-il un moyen de le faire sans l'explicite casting?
Aussi j'ai pensé qu'en Java, Entier à Double conversion est Implicite?

OriginalL'auteur Amitab Das | 2013-11-15