#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. Вот и все, не могу поверить, что я это пропустил! Спасибо