Метод удаления JPA возвращает 200, но не удаляет

#java #typescript #spring-boot #jpa

Вопрос:

Я использую Postman для тестирования своего метода удаления JPA, и когда я его тестирую, он возвращает 200 ответов, но на самом деле не удаляет из моей базы данных.

Репо —

 @Repository
public interface TeamUserRepository extends JpaRepository<TeamUser, Long> {
    void deleteByUserId(Integer userId);
}
 

Обслуживание —

 public void removeTeamUser(Integer userId) {
    teamUserRepository.deleteByUserId(userId);
}
 

Контроллер —

 @DeleteMapping(value = "/{teamId}/users/{userId}")
public void removeUserFromTeam(Integer userId) {
    teamService.removeTeamUser(userId);
}
 

Машинописный текст —

 export const removeUserFromTeam = (teamId: number | string, userId: number | string) =>
    axios.delete(`http://localhost:8080/api/v1/team/${teamId}/users/${userId}`)
 

Комментарии:

1. Пожалуйста, также опубликуйте свой класс сущности. Если бы в вашем классе сущностей был определен u id вместо userId . тогда вам не нужно даже писать метод в классе репозитория. В классе обслуживания вы можете позвонить напрямую по телефону teamUserRepository.deleteById(userId);

Ответ №1:

Значение userId должно быть равно нулю. Вот почему нет удаления.

Вам необходимо привязать параметры пути к параметрам метода.

Итак, в том Controller , чтобы изменить

 @DeleteMapping(value = "/{teamId}/users/{userId}")
public void removeUserFromTeam(Integer userId) {
    teamService.removeTeamUser(userId);
}
 

Для

 @DeleteMapping(value = "/{teamId}/users/{userId}")
public void removeUserFromTeam(@PathVariable("teamId") Integer teamId, @PathVariable("userId") Integer userId) {
    teamService.removeTeamUser(userId);
}
 

Комментарии:

1. Вот и все, не могу поверить, что я это пропустил! Спасибо