web-dev-qa-db-ja.com

java.lang.ClassCastException:Java 1.6でJava.lang.LongをJava.lang.Integerにキャストできません

Objectをintにキャストしていますが、この例外が発生します...

実際、私のHibernate-JPAメソッドはObjectを返し、それからObjectintに変換しています...

Hibernateのコードは次のとおりです。

@Transactional
public Object getAttendanceList(User user){

    Query query = entityManager.createQuery("select Count(ad) from AttendanceDemo ad inner join ad.attendee at  where at.user=:user",
            Long.class);
    query.setParameter("user", user);
    return query.getSingleResult();
}

今、このObjectintに変換しています:

int k = (Integer) userService.getAttendanceList(currentUser);

ObjectIntegerに変換しています。

22
SWEE

つかいます:

_((Long) userService.getAttendanceList(currentUser)).intValue();
_

代わりに。

.intValue()メソッドは、クラス Number で定義され、Longが拡張されます。

49
fge

結果の数は、(理論的には)整数の範囲よりも大きくなる可能性があります。コードをリファクタリングし、代わりに返されたlong値を使用します。

4
Jeroen Kransen