У меня есть сущность и контроллер покоя, когда я делаю запрос к контроллеру, он выдает это исключение:

java.lang.IllegalArgumentException: значение параметра [1] не соответствует ожидаемому типу [java.lang.Integer (н / п)]

Мой контроллер:

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

Моя сущность имеет идентификатор типа int:

  @Id
@GeneratedValue(strategy = GenerationType.AUTO)
private int id;
2
gg ff 12 Апр 2019 в 19:09

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);
}
0
Christos Karapapas 13 Апр 2019 в 04:12

Для тех, кто находит эту проблему на основе ошибки:

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);

В этом случае, пожалуйста, используйте идентификатор типа (например: findAllByTypeId).

0
Michael 15 Янв 2020 в 10:59