我正在尝试在使用 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();
}
添加回答
举报
0/150
提交
取消