gpt4 book ai didi

java - 将方法传递给 Controller ​​ : java. lang.Long 无法转换为 java.lang.Integer

转载 作者:行者123 更新时间:2023-12-02 01:43:00 25 4
gpt4 key购买 nike

我正在尝试在使用 Java 8、Spring 和 Hibernate 的项目中将方法传递给 Controller ​​。但我遇到了“请求处理失败;嵌套异常是 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;
}

Controller 看起来像这样

@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 的任何其他查询。我做错了什么,是否有更好的方法来查询数据库并将值返回到模型?

最佳答案

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

关于java - 将方法传递给 Controller ​​ : java. lang.Long 无法转换为 java.lang.Integer,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57477498/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com