参数值[1]与预期类型[java.lang.Integer(n/a)]不匹配
我有实体和rest控制器,当我向控制器发出请求时,它会引发以下异常: java.lang.IllegalArgumentException:参数值[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
@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,但现在我用原始数字代替了它。