3

Java で定義された私のスタッフ エンティティは次のようになります。

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
}

私のクエリコード:

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();
}

しかし、これを実行すると、次のようなエラーが表示されます。

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

数値を double に明示的にキャストすると、機能します。

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

明示的なキャストなしでこれを行う方法はありますか? また、Java では Integer から Double への変換は暗黙的だと思いましたか?

4

2 に答える 2

4

整数と見なして Hibernate を実行し、double であることを伝えます。

    criteria.add(Restrictions.eq("salary",   1000000d));
于 2013-11-15T05:47:55.647 に答える
0

Restriction.eq はオブジェクトを取るため、暗黙的なキャストはできません。

于 2013-11-15T05:49:12.293 に答える