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

SWE*_*WEE 25 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();
}
Run Code Online (Sandbox Code Playgroud)

现在我将此Object转换为int ..

int k = (Integer) userService.getAttendanceList(currentUser);
Run Code Online (Sandbox Code Playgroud)

我正在将Object转换为Integer ...

fge*_*fge 51

使用:

((Long) userService.getAttendanceList(currentUser)).intValue();
Run Code Online (Sandbox Code Playgroud)

代替.

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

  • 为什么不使用`((Number)userService.getAttendanceList(currentUser)).intValue();` (3认同)

Jer*_*sen 5

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