java.lang.ClassCastException:java.lang.Long无法在java 1.6中强制转换为java.lang.Integer

时间:2013-06-18 08:27:16

标签: java hibernate object type-conversion

即使我将Object转换为int,但发生此异常......

实际上我的Hibernate-JPA方法返回Object然后我将Object转换为int ...

这是我的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();
}

现在我将此Object转换为int

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

我正在将Object转换为Integer

2 个答案:

答案 0 :(得分:48)

使用:

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

代替。

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

答案 1 :(得分:3)

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