You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Java报TypeMismatchException错误:Hires实体id预期Integer却得到String如何解决

问题原因

你错误调用了JPA Repository的主键查询方法:

  • Hires实体中被@Id标注的主键字段是int类型的id,Spring Data JPA自带的findById()方法要求入参必须和主键类型匹配,也就是需要传入Integer/int类型的参数
  • 你现在传的是String类型的hid参数,和主键要求的Integer类型不匹配,直接触发类型不匹配异常

修复方法

选其中一种即可:

方法一:新增按hid查询的自定义方法

在你的HiresRepository接口里加一行代码:

Optional<Hires> findByHid(String hid);

然后把业务层的调用逻辑改成用这个自定义方法:

public Optional<Hires> getHireById(String hid) {
    return hr.findByHid(hid);
}

方法二:调整主键配置

如果你业务上实际是用hid作为唯一主键的,直接把@Id注解放到hid字段上,调整实体字段注解:

@Id
@GeneratedValue(strategy = GenerationType.UUID) // 替换为你实际的hid生成策略
@Column(unique = true)
private String hid;
// 原id字段去掉@Id注解
private int id;

调整后自带的findById()方法就会要求传入String类型参数,你现有的调用逻辑不需要额外修改就可以正常运行。

内容的提问来源于stack exchange,提问作者ConfusedCitizen

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.06 09:51:02