将方法传递给控制器: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 的任何其他查询。我做错了什么,是否有更好的方法来查询数据库并将值返回给 Model?

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();
}

相关内容

最新更新