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

gg *_* ff 5 java spring spring-data

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

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);
}
Run Code Online (Sandbox Code Playgroud)

我的实体有 int 类型 id:

  @Id
@GeneratedValue(strategy = GenerationType.AUTO)
private int id;
Run Code Online (Sandbox Code Playgroud)

小智 6

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

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

您可能会像这样使用 JPA:

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

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


Chr*_*pas 3

由于 Id 是一个 uuid,因此您必须将其保留为实体中的字符串。

@Id
@GeneratedValue(strategy = GenerationType.AUTO)
private String id;
Run Code Online (Sandbox Code Playgroud)

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

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