我正在嘗試在使用 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
提交
取消