Java Метод репозитория Spring CRUD "deleteById" не работает - PullRequest
0 голосов
/ 12 апреля 2020

Я только что столкнулся с проблемой с моим веб-приложением Spring. Я добавил метод deleteById, который объявлен в MessageRepo, который расширяется из CRUDRepository. Этот метод отлично работает, и он перенаправляет на мою "главную" страницу, но в моей MySQL БД ничего не меняется. Надеюсь, что кто-нибудь может ответить мне, что не так с моим приложением. Не стесняйтесь отвечать. Посмотрите внизу для этого метода в моем контроллере

    @PostMapping("/main/{id}")
    public String delete(@PathVariable(value = "id") Long id) {

        messageRepo.deleteById(id);

        return "redirect:/main";
    }

Вот так выглядят мои сообщения с кнопкой для удаления чего-либо.

                        <#list messages as message>
                        <div class="task-card">
                            <p class="task-card-p">${message.text}</p>
                            <form method="post" action="/main/${message.id}">
                                <input type="hidden" name="_csrf" value="${_csrf.token}"/>
                                <button type="submit" class="task-card-btn">delete</button>
                            </form>
                        </div>
                        </#list>

Это мое messageRepo. Там нет каких-либо методов причина я расширил crudRepo.

public interface MessageRepo extends CRUDRepository<Message, Long> {

}

1 Ответ

0 голосов
/ 12 апреля 2020

Вы должны добавить аннотацию @Transactional в методе удаления вашего контроллера. Вы должны импортировать org.springframework.transaction.annotation.Transactional, чтобы использовать эту аннотацию. Также убедитесь, что вы добавляете методы получения и установки в свой класс Message. Это решение будет работать за вас, но в качестве хорошей практики вы должны добавить сервисный уровень между вашим контроллером и классом репо. Отметьте все методы класса Service, которые выполняют операции с базой данных, как @Transactional.

...