【发布时间】:2019-12-19 23:54:08
【问题描述】:
我正在尝试在使用 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 的查询。我做错了什么,有没有更好的方法来查询数据库并将值返回给模型?
【问题讨论】:
-
komitentService.vratiBroj()是否返回Long?如果是这样:int a = komitentService.vratiBroj().intValue(); -
不,我到处都返回 int 。在我的 KomitentService 中是
public int vratiBroj();而在我的 KomitentServiceImpl 中是@Override @Transactional public int vratiBroj() { return komitentDAO.vratiBroj(); }