猿问

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

我正在尝试在使用 Java 8、Spring 和 Hibernate 的项目中将方法传递给控制器。但是我遇到了“请求处理失败;嵌套异常是 java.lang.ClassCastException:java.lang.Long 无法转换为 java.lang.Integer”错误的问题。


我来自 KomitentDAO 的方法看起来像这样


@Override

public 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 的查询。我做错了什么,是否有更好的方法来查询数据库并将值返回给模型?


翻阅古今
浏览 196回答 1
1回答

ITMISS

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();}
随时随地看视频慕课网APP

相关分类

Java
我要回答