![](/img/trans.png)
[英]java.lang.IllegalArgumentException: Parameter value [1604438222] did not match expected type [java.lang.Integer (n/a)
[英]Parameter value [1] did not match expected type [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;
對於那些根據錯誤發現此問題的人:
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
)。
由於 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);
}
就我而言,我使用過 DTO,所以
以前我的@query是這樣的
@query("SELECT ... WHERE ucs.district = ?1")
然后我像這樣改變了@query
@query("SELECT ... WHERE ucs.district.id = ?1")
例如,如果您將 JPA 與 @Query 一起使用:
@Query("SELECT r FROM Employee r WHERE r.empId = ?1)
Employee getMyEmployee(long id);
要么
@Query("SELECT r FROM Employee r WHERE r.empId = :id)
Employee getMyEmployee(@Param("id") long id);
確保傳遞的參數是長值,並且empId也是長值。 如果您通過傳遞int值來執行方法classObj.getMyEmployee(someIntVariable)
,則可能會導致上述錯誤。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.