为了账号安全,请及时绑定邮箱和手机立即绑定

将方法传递给控制器​​:java.lang.Long 不能转换为 java.lang.Integer

将方法传递给控制器​​:java.lang.Long 不能转换为 java.lang.Integer

翻阅古今 2023-06-04 17:51:39
我正在尝试在使用 Java 8、Spring 和 Hibernate 的项目中将方法传递给控制器。但是我遇到了“请求处理失败;嵌套异常是 java.lang.ClassCastException:java.lang.Long 无法转换为 java.lang.Integer”错误的问题。我来自 KomitentDAO 的方法看起来像这样@Overridepublic int vratiBroj() {    Session currentSession = sessionFactory.getCurrentSession();    int num = 0;    Query query = currentSession.createQuery("SELECT count(*) from Komitent");     num = (int) query.getSingleResult();    return num;}控制器就像这样@GetMapping("/dodaj")public String prikaziForm(Model theModel) {    Komitent komt = new Komitent();     int a = komitentService.vratiBroj();    komt.setSifra(a);       theModel.addAttribute("komitent", komt);    return "komitent-form";}我需要在我的函数中在 komt.Sifra 中设置一个整数。查询只是一个测试,它可以是任何其他返回单个 int 的查询。我做错了什么,是否有更好的方法来查询数据库并将值返回给模型?
查看完整描述

1 回答

?
ITMISS

TA贡献1871条经验 获得超8个赞

count(*) 返回 Long 而不是 Integer。


所以你的方法应该是这样的:


public int vratiBroj() {

    Session currentSession = sessionFactory.getCurrentSession();

    Query query = currentSession.createQuery("SELECT count(*) from Komitent"); 

    long num = (Long) query.getSingleResult();

    return num.intValue();

}


查看完整回答
反对 回复 2023-06-04
  • 1 回答
  • 0 关注
  • 148 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信