参数值 \[1\] 与预期类型不匹配 \[java.lang.Integer (n/a)\]

新手上路,请多包涵

我有实体和休息控制器,当我向我的控制器发出请求时,它抛出这个异常:

java.lang.IllegalArgumentException:参数值 [1] 与预期类型不匹配 [java.lang.Integer (n/a)]

我的控制器:

 @GetMapping("/createCharacter")
public Character createCharacters(@RequestParam("userId") Integer userId, @RequestParam("mapId") long mapId) {
    return createCharactersService.createCharacters(userId, mapId);
}

我的实体有 int 类型 id:

   @Id
@GeneratedValue(strategy = GenerationType.AUTO)
private int id;

原文由 gg ff 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 1.6k
2 个回答

由于 Id 是一个 uuid,您必须将其作为字符串保存在实体中。

 @Id
@GeneratedValue(strategy = GenerationType.AUTO)
private String id;

因此,您必须在服务和控制器中将其用作字符串。

 @GetMapping("/createCharacter")
public Character createCharacters(@RequestParam("userId") String userId, @RequestParam("mapId") long mapId) {
    return createCharactersService.createCharacters(userId, mapId);
}

原文由 Christos Karapapas 发布,翻译遵循 CC BY-SA 4.0 许可协议

对于那些根据错误发现此问题的人:

 java.lang.IllegalArgumentException: Parameter value [Type@abdc80fc] did not match expected type [Type (n/a)]

您可能会像这样使用 JPA:

 @Repository
public interface OtherRepository extends JpaRepository<Other, Long> {
    List<Other> findAllByType(final Type type);

在这种情况下,请使用 Type 的 ID(因此: findAllByTypeId )。

原文由 Michael 发布,翻译遵循 CC BY-SA 4.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题