gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-12-01 17:28:19 25 4
gpt4 key购买 nike

我刚刚在我的 Web Spring 应用程序中遇到了一个问题。我添加了一个方法deleteById,该方法在MessageRepo 中声明,该方法从CRUDRepository 扩展。这种方法工作完美,它重定向到我的“主”页面,但我的 MySQL 数据库没有任何变化。希望任何人都可以回答我的应用程序有什么问题。请随意回答。在我的 Controller 中往下看这个方法

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

messageRepo.deleteById(id);

return "redirect:/main";
}

这就是我的消息在 View 中的样子,带有删除任何内容的按钮。

                        <#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> {

}

最佳答案

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

关于Java Spring CRUD 存储库方法 "deleteById"不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61174922/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com