java.lang.ClassCastException:在java1.6中,java.lang.Long不能转换为java.lang.Integer

qojgxg4l  于 2023-06-04  发布在  Java
关注(0)|答案(4)|浏览(145)

即使我把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

20jt8wwn

20jt8wwn1#

用途:

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

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

bvuwiixz

bvuwiixz2#

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

qlzsbp2j

qlzsbp2j3#

你可以这样做:

int k = Math.toIntExact((Long) userService.getAttendanceList(currentUser));
olqngx59

olqngx594#

只需将long更改为Number记住您的数据库是Number,而不是int或long。

相关问题