Java Spring CRUD存储库方法“ deleteById”不起作用

问题描述 投票:0回答:1

我刚刚陷入我的Web 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>

这是我的留言回购。没有任何方法导致我扩展了crudRepo。

public interface MessageRepo extends CRUDRepository<Message, Long> {

}

java mysql spring hibernate crud
1个回答
0
投票

您必须在控制器的delete方法上添加@Transactional批注。您必须导入org.springframework.transaction.annotation.Transactional才能使用此注释。还要确保在Message类中添加getter和setter。该解决方案将为您完成工作,但是作为一个好的实践,您应该在Controller和Repo Class之间添加一个服务层。将执行数据库操作的Service类的所有方法标记为@Transactional

© www.soinside.com 2019 - 2024. All rights reserved.