Hibernate : java.lang.Classcastexception-Fehler: java.lang.Integer kann nicht gewirkt werden, um java.lang.Doppel
Meine Mitarbeiter Entität definiert, in Java ist wie folgt :
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
}
Mein Abfrage-code :
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();
}
Aber wenn ich diese ausführe bekomme ich eine Fehlermeldung, die sagt :
java.lang.ClassCastException: java.lang.Integer cannot be cast to java.lang.Double
Wenn ich explizit umgewandelt, die Zahl in eine double funktioniert es :
criteria.add(Restrictions.eq("salary", (double) 1000000));
Gibt es eine Möglichkeit, dies zu tun, ohne das explizite casting?
Auch dachte ich, dass bei Java -, Integer -, Double-conversion Implizit war?
InformationsquelleAutor Amitab Das | 2013-11-15
Du musst angemeldet sein, um einen Kommentar abzugeben.
Ruhezustand wenn man es als einen integer, sagen, dass es doppelt.
Gibt es eine Möglichkeit, ich könnte hinzufügen 'd', um die Anzahl dynamisch? Weil ich bin versucht zu schreiben, eine Funktion, die Sie ausführen soll, legen Sie jede Art von Einschränkung. In der Tat könnte es ein integer oder ein string sein. Gibt es eine Möglichkeit, es zu tun?
Ja. Sie schreiben konnte
new Double(xxx.toString())
- das wird das richtige tun, obxxx
ist einDouble
eineInteger
eineString
oder im Grunde alles, was vernünftigerweise kann umgewandelt werden in einDouble
.InformationsquelleAutor Suresh Atta
Beschränkung.eq-nimmt ein Objekt, also kein implizites casting ist möglich.
InformationsquelleAutor Scary Wombat