我正在嘗試在使用 Java 8、Spring 和 Hibernate 的項(xiàng)目中將方法傳遞給控制器。但是我遇到了“請(qǐng)求處理失??;嵌套異常是 java.lang.ClassCastException:java.lang.Long 無(wú)法轉(zhuǎn)換為 java.lang.Integer”錯(cuò)誤的問(wèn)題。我來(lái)自 KomitentDAO 的方法看起來(lái)像這樣@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";}我需要在我的函數(shù)中在 komt.Sifra 中設(shè)置一個(gè)整數(shù)。查詢只是一個(gè)測(cè)試,它可以是任何其他返回單個(gè) int 的查詢。我做錯(cuò)了什么,是否有更好的方法來(lái)查詢數(shù)據(jù)庫(kù)并將值返回給模型?
1 回答

ITMISS
TA貢獻(xiàn)1871條經(jīng)驗(yàn) 獲得超8個(gè)贊
count(*) 返回 Long 而不是 Integer。
所以你的方法應(yīng)該是這樣的:
public int vratiBroj() {
Session currentSession = sessionFactory.getCurrentSession();
Query query = currentSession.createQuery("SELECT count(*) from Komitent");
long num = (Long) query.getSingleResult();
return num.intValue();
}
添加回答
舉報(bào)
0/150
提交
取消