java.lang.ClassCastException: java.lang.Long 不能在 java 1.6 中强制转换为 java.lang.Integer

2022-09-01 11:25:16

即使我正在投射到int中,但是这个例外发生了......Object

实际上,我的Hibernate-JPA方法被返回,然后我将其转换为...ObjectObjectint

这是我的休眠代码:

@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


答案 1

用:

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

相反。

该方法在扩展的类 Number 中定义。.intValue()Long


答案 2

结果的数量(理论上)可以大于整数的范围。我会重构代码并使用返回的长整型值。