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

参数值[1]与预期类型[java.lang.Integer(n/a)]不匹配,java,spring,spring-data,Java,Spring,Spring Data,我有实体和rest控制器,当我向控制器发出请求时,它会引发以下异常: java.lang.IllegalArgumentException:参数值[1]与预期的类型[java.lang.Integer(n/a)]不匹配 我的控制器: @GetMapping("/createCharacter") public Character createCharacters(@RequestParam("userId") Integer userId, @RequestParam("mapId") long

我有实体和rest控制器,当我向控制器发出请求时,它会引发以下异常:

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;

由于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);
}

对于根据错误发现此问题的用户:

java.lang.IllegalArgumentException:参数值[Type@abdc80fc]与预期类型[类型(n/a)]不匹配
您可能会这样使用JPA:

@存储库
公共接口OtherRepository扩展了JpaRepository{
列出findAllByType(最终类型);

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

如果您将JPA与@Query一起使用,例如:

 @Query("SELECT r FROM Employee r WHERE r.empId = ?1)
 Employee getMyEmployee(long id);

确保传递的参数是long值,empId也是long
classObj.getMyEmployee(someIntVariable)

通过传递int值,可能会导致上述错误。

在我的情况下,我使用了DTO

之前我的@query是这样的

@query("SELECT ... WHERE ucs.district = ?1")
@query("SELECT ... WHERE ucs.district.id = ?1")
然后我像这样更改了@query

@query("SELECT ... WHERE ucs.district = ?1")
@query("SELECT ... WHERE ucs.district.id = ?1")

你到底想做什么?我试图将Integer更改为Long或String,这有助于解决我的问题,但在本例中,我的Spring Data Rest for user实体无法工作。为什么要将Id声明为字符串,它是uuid?通常Id在实体中的类型为Long,尤其是当数据库中的相对Id字段为大整数时。Ye、 它是UUID,但现在我用原始数字代替了它。